在java中的jpanel中添加一个jpanel

时间:2013-08-23 03:22:41

标签: java swing jpanel

我有一个名为Jpanel的{​​{1}}和另一个名为mainPanel的类,其扩展名为MyPanel。我想将JPanel添加到MyPanel。我做了这个代码而没有得到任何结果。

这是我的主要课程,其中包含mainPanel

mainPanel

这是我之前添加到import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class Main extends JFrame { private JPanel contentPane; private final JPanel mainPanel = new JPanel(); /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Main frame = new Main(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Main() { inItGUI(); } private void inItGUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 662, 417); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); mainPanel.setBounds(25, 11, 611, 341); contentPane.add(mainPanel); mainPanel.setLayout(null); mainPanel.add(new MyPanel());// **Here i added MyPanel** mainPanel.revalidate(); repaint(); } } 的{​​{1}}课程:

MyPanel

1 个答案:

答案 0 :(得分:4)

欢迎来到null布局管理员

的一个奇妙陷阱

如果删除布局管理器,则会删除组件自动调整大小和位置的任何可能性。

基本上发生的事情是MyPanel被添加到mainPanel和位置0x0,大小为0x0,所以没有任何内容开始显示。

真正的解决方案是使用appropriate layout manager

不要欺骗自己。在现代计算机系统领域中管理组件的位置和大小,尤其是组件之间的关系是复杂的。您必须能够根据当前系统的字体,DPI,方向等来考虑每个组件的呈现方式,然后考虑如何影响共享同一容器的其他组件......您还必须监视附加到的组件层次结构中的更改...

这是布局管理员提供的工作...... Swing是围绕布局管理器的使用而设计的,你应该有一个非常好的理由忽略它们......恕我直言