Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
contentPanel内的Java Swing调整大小面板_Java_Swing_Jpanel_Layout Manager_Null Layout Manager - Fatal编程技术网

contentPanel内的Java Swing调整大小面板

contentPanel内的Java Swing调整大小面板,java,swing,jpanel,layout-manager,null-layout-manager,Java,Swing,Jpanel,Layout Manager,Null Layout Manager,我的框架结构如下: 框架->内容窗格面板->顶部面板->表格 代码如下: private JPanel contentPane; private JTable table; private JPanel topPanel; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try {

我的框架结构如下:

框架->内容窗格面板->顶部面板->表格

代码如下:

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和它所包含的表也会调整大小,并且不会保持与调整框架大小之前相同的大小。我读过关于布局的书,但我不能让它工作。有什么建议吗?

使用布局管理器来控制框架内组件的大小和位置。避免将面板的布局管理器设置为null

我建议你看看这个链接:了解更多关于你可以使用的不同类型的布局

例如,在您的代码中,我将使用BorderLayout:

contentPane.setLayout(new BorderLayout());

顺便说一下,我假设您的类ShowList扩展了JFrame,因为setDefaultCloseOperation之类的方法会给您一个错误,如果不是的话,对吗


我希望它能有所帮助。

使用布局管理器来控制框架内组件的大小和位置。避免将面板的布局管理器设置为null

我建议你看看这个链接:了解更多关于你可以使用的不同类型的布局

例如,在您的代码中,我将使用BorderLayout:

contentPane.setLayout(new BorderLayout());

顺便说一下,我假设您的类ShowList扩展了JFrame,因为setDefaultCloseOperation之类的方法会给您一个错误,如果不是的话,对吗


我希望有帮助。

为什么要用新关键字调用ShowList()?它既不是类也不是方法。Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或者与布局填充和边框一起使用。为什么要用new关键字调用ShowList()?它既不是类也不是方法。Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。
topPanel.add(table, BorderLayout.Center);