Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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
Java setBounds不使用JPanel_Java_Swing_Jpanel_Layout Manager - Fatal编程技术网

Java setBounds不使用JPanel

Java setBounds不使用JPanel,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,我正在用java做一个小Gui。我正在使用setBounds方法设置JFrame上按钮等的位置,但问题是,当我使用它时,JFrame上的JPanel按钮不可见,没有JPanel也没关系,请查看代码并帮助我,因为我是初学者,面临这些愚蠢的问题 这个很好用 JFrame jframe = new JFrame("Working Fine"); jframe.setLayout(null); JButton jbutton = new JButton("Position Test"

我正在用java做一个小Gui。我正在使用setBounds方法设置JFrame上按钮等的位置,但问题是,当我使用它时,JFrame上的JPanel按钮不可见,没有JPanel也没关系,请查看代码并帮助我,因为我是初学者,面临这些愚蠢的问题

这个很好用

  JFrame jframe = new JFrame("Working Fine");  
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);  
  jframe.add(jbutton);  
  jframe.setSize(300,300);
  jframe.setVisible(true);
相同的代码,当我添加按钮到Jpanel,然后它不工作,所以有什么问题,请指导我

  JFrame jframe = new JFrame("causing problem ");
  jframe.setSize(300,300);
  JPanel p = new JPanel();
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);
  jframe.add(p);
  p.add(jbutton);
  p.setVisible(true);
 //jframe.add(jbutton);  
  jframe.setVisible(true);

请帮我解决这个小问题

问题是,当您使用绝对定位时,
JPanel
组件没有默认大小,因此不会出现。要让它看起来像你可以做的

JFrame frame = new JFrame("No Problem");
JPanel panel = new JPanel() {
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 300);
    };
};
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton button = new JButton("Position Test");
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);

虽然可以不使用布局管理器,但如果可能的话,应该使用布局管理器。布局管理器可以更轻松地调整依赖于外观的组件外观、不同的字体大小、容器不断变化的大小以及不同的区域设置

布局管理器的选择将取决于您希望如何布局组件


请参阅。

为了设置绝对位置,您必须摆脱JPanel的布局:

p、 setLayout(空)


setLayout(null)
setBounds(0,0,100,100)
setSize(300300)
都是非常糟糕的做法。您永远不应该使用null布局。阅读这个布局管理器教程:我正在学习Java,还没有学过布局管理器,我们的指导老师要求我们在学习布局管理器之前使用null,所以没有使用它们。你能告诉我哪里错了吗?“我们的讲师要求我们使用null,直到我们通过布局经理”你的讲师不应该指导任何人,直到他们在该科目中获得“最低能力”。任何有过的人都不会告诉你使用
null
layouts。如果你知道自己在做什么,那么null布局是非常好的,伙计们。我的意思是,这只是图形用户界面,而标准布局经理真的很差劲。如果您想要盒式布局,可以使用html,但在使用编程语言时,您可能还需要了解如何编写gui。我的意思是,看看一个简单的表单元素看起来有多完美,并将其与swingi进行比较,我是一名学生,还没有学会它,好的,请指导我作为初学者应该使用哪一个,你的答案是可以接受的。。ThanksI试图用百分比做一个绝对布局,直到我尝试了这个,它才起作用。它解决了为什么挫折不起作用的问题,而不是质疑它。