BoxLayout不能被共享错误

我有这个Java JFrame类,我想使用boxlayout,但是我得到一个错误,说java.awt.AWTError: BoxLayout can't be shared 。 我已经看到其他人有这个问题,但他们通过在contentpane上创buildboxlayout来解决这个问题,但这正是我在这里所做的。 这是我的代码:

 class edit_dialog extends javax.swing.JFrame{ javax.swing.JTextField title = new javax.swing.JTextField(); public edit_dialog(){ setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE); setTitle("New entity"); getContentPane().setLayout( new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS)); add(title); pack(); setVisible(true); } } 

你的问题是,你正在为JFramethis )创build一个BoxLayout ,但是将其设置为JPanelgetContentPane() )的布局。 尝试:

 getContentPane().setLayout( new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS) ); 

我也发现这个错误:

 JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 

JPanel在传递给BoxLayout时尚未初始化。 所以这样分割这条线:

 JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 

这将工作。

我认为从以前的答案突出重要的一点是,BoxLayout的目标(第一个参数)应该与setLayout方法被调用的Container相同,如下例所示:

 JPanel XXXXXXXXX = new JPanel(); XXXXXXXXX.setLayout(new BoxLayout(XXXXXXXXX, BoxLayout.Y_AXIS));