java - 设置 JPanel 的大小不依赖于 JFrame 的大小

标签 java swing jframe jpanel layout-manager

我的项目有一个 JPanel 和 JFrame(JPanel in JFrame)。 我设置 JFrame 的大小是(400,400)。 JPanel 的大小为(150,150)。我将JPanel添加到JFrame并运行它,当它显示时,JPanel的大小不是150,它的大小与JFrame的大小相同。我不知道如何解决它:(

如何设置 JPanel 的大小不依赖于 JFrame 的大小?

这是我的代码:

public class Draw_JPanel extends JFrame{
Load_image panel_im = new Load_image();
public Draw_JPanel()
{       
    this.setSize(400,400);
    this.add(panel_im);
    }   
public static void main(String[] args){
    Draw_JPanel abc = new Draw_JPanel();

    abc.setVisible(true);
    }
}

和我的 Load_image 类:

public class Load_image extends JPanel{
public Load_image()
{
    setSize(30,30);     
    this.setBackground(Color.RED);
}
}

最佳答案

您将面板直接添加到默认具有 BorderLayout 的框架,它会调整面板的大小。尝试使用 this.getContentPane().add(panel_im); 而不是 this.add(panel_im); ,因为 contentPane 默认具有 flowLayout 。另请阅读有关 LayoutManager 的更多信息。 tutorial

还可以使用 setPreferedSize() 代替 setSize() ( difference here )

关于java - 设置 JPanel 的大小不依赖于 JFrame 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887747/

相关文章:

java - 需要正则表达式的帮助来提取标签内的数据

java - 带有 Headless JS 的 Android 后台服务无法正常工作

java - 我无法获取下面的程序,请解释一下

java - setImageIcon 不在 mac swing 窗口上设置 JFrame 图标

java - 在java中绘制游戏板

java - 按两个条件拆分字符串

java - Java HashSet<Long> 应该占用多少内存

java - 当子项调整大小时调整 JFrame 大小 : how to keep up?

java - JTable中的JComboBox显示无效数据

java - 在 Swing 中更改 JTable 列中的下拉内容