我需要动态添加组件。此外,我需要动态更改布局。
最佳答案
作为引用,这里有一个 sscce显示基本方法,validate() .这个更详细example显示了两个要求:它更改布局并动态添加组件。
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
/** @see http://stackoverflow.com/questions/5750068 */
public class DynamicLayout extends JPanel {
private static final LayoutManager H = new GridLayout(1, 0);
private static final LayoutManager V = new GridLayout(0, 1);
public DynamicLayout() {
this.setLayout(H);
this.setPreferredSize(new Dimension(320, 240));
for (int i = 0; i < 3; i++) {
this.add(new JLabel("Label " + String.valueOf(i), JLabel.CENTER));
}
}
private void display() {
JFrame f = new JFrame("DynamicLayout");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
JPanel p = new JPanel();
p.add(new JButton(new AbstractAction("Horizontal") {
@Override
public void actionPerformed(ActionEvent e) {
DynamicLayout.this.setLayout(H);
DynamicLayout.this.validate();
}
}));
p.add(new JButton(new AbstractAction("Vertical") {
@Override
public void actionPerformed(ActionEvent e) {
DynamicLayout.this.setLayout(V);
DynamicLayout.this.validate();
}
}));
f.add(p, BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new DynamicLayout().display();
}
});
}
}
关于Java Swing : How to change GUI dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5750068/
由于近期询要的人过多,自行加群769119544领取源码目录一、功能需求二、数据字典1.数据流条目2.文件条目三、用例图四、数据流图五、E-R图六、系统框架 七、数据库设计八、界面设计九、代码展示1、数据表对象层(domain层)1.1、房间对象初始化1.2、旅客对象初始化1.3、 管理员对象初始化2、数据访问对象层(dao层)2.1、房间相关信息2.2、旅客信息2.3、管理员信息3、util包3.1、JDBC交互数据库(DBUtil)3.2、实时时间(DateUtil)4、业务层(server层)4.1、房间(RoomContorller)4.2、旅客(RoomInContorller)4.