contentpanel内的java swing resize面板

bn31dyow  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(425)

我的框架结构如下:
框架->内容面板->顶部面板->表格
代码如下:

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);
}

我想实现的是,当我调整框架的大小使窗口变大时,这个框架所包含的顶面板和表也会调整大小,并且不会保持与调整框架大小之前相同的大小。我读过有关布局的书,但我不能使它工作。有什么建议吗?

kupeojn6

kupeojn61#

使用layoutmanager控制框架内组件的大小和位置。避免将面板的布局管理器设置为空。
我建议您查看以下链接:“布局管理器的可视化指南”,以了解有关可以使用的不同类型布局的更多信息。
例如,在您的代码中,我将使用borderlayout:

contentPane.setLayout(new BorderLayout());

...

contentPane.add(topPanel, BorderLayout.CENTER);
topPanel.setLayout(new BorderLayout());

...

topPanel.add(table, BorderLayout.Center);

顺便说一句,我假设您的类showlist扩展了jframe,因为setdefaultcloseoperation之类的方法会给您一个错误,如果不是,是吗?
希望对你有帮助。

相关问题