swing动态创建组件
时间: 2024-01-26 20:14:06 浏览: 17
在Java Swing中,可以使用`SwingUtilities.updateComponentTreeUI(Component c)`方法来动态更新组件的外观。该方法会递归地更新指定组件及其所有子组件的外观。
下面是一个示例代码,演示了如何动态创建并更新Swing组件的外观:
```java
import javax.swing.*;
import java.awt.*;
public class DynamicComponentCreation extends JFrame {
private JPanel panel;
public DynamicComponentCreation() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setTitle("Dynamic Component Creation");
panel = new JPanel();
panel.setLayout(new FlowLayout());
JButton button = new JButton("Click me!");
button.addActionListener(e -> {
JLabel label = new JLabel("New Label");
panel.add(label);
SwingUtilities.updateComponentTreeUI(this);
});
panel.add(button);
add(panel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
DynamicComponentCreation frame = new DynamicComponentCreation();
frame.setVisible(true);
});
}
}
```
在上述代码中,我们创建了一个`JFrame`窗口,并在窗口中添加了一个`JPanel`面板和一个按钮。当点击按钮时,会动态地创建一个新的`JLabel`标签,并将其添加到面板中。然后,我们调用`SwingUtilities.updateComponentTreeUI(this)`方法来更新窗口及其所有子组件的外观。
运行上述代码,你将看到一个窗口和一个按钮。每次点击按钮时,都会动态地创建一个新的标签,并将其添加到面板中。