Java setBounds不能与JPanel一起使用
我正在java中做一个小Gui。 我正在使用setBounds方法在我的JFrame上设置按钮等的位置,但问题是,当我使用它与JPanel按钮在JFrame上不可见,并且没有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添加Button时,相同的代码然后它不起作用,所以什么是错的,请指导我
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(NULL);