我在一个框架中有以下结构:
框架->内容窗格面板->顶部面板面板->表格
这是代码:
private JPanel contentPane;
private JTable table;
private JPanel topPanel;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ShowList frame = new ShowList();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public ShowList() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 675, 433);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
topPanel = new JPanel();
topPanel.setBounds(76, 76, 491, 245);
contentPane.add(topPanel);
topPanel.setLayout(null);
table = new JTable();
table.setBounds(0, 0, 491, 245);
topPanel.add(table);
}
我想实现的是,当我调整框架的大小,使窗口更大时,这个框架所包含的topPanel和表也会调整大小,并且不会保持与调整框架大小之前相同的大小。我读过关于布局的书,但我无法使它发挥作用。有什么建议吗?
使用LayoutManager控制框架内组件的大小和位置。避免将面板的布局管理器设置为null。
我建议您查看以下链接:"布局管理器视觉指南",以了解有关可以使用的不同类型布局的更多信息。
例如,在您的代码中,我会使用BorderLayout:
contentPane.setLayout(new BorderLayout());
contentPane.add(topPanel, BorderLayout.CENTER);
topPanel.setLayout(new BorderLayout());
topPanel.add(table, BorderLayout.Center);
顺便说一句,我想你的类ShowList扩展了JFrame,因为像setDefaultCloseOperation这样的方法会给你一个错误,如果不是的话,对吗?
我希望它能有所帮助。