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); } }
你的问题是,你正在为JFrame
( this
)创build一个BoxLayout
,但是将其设置为JPanel
( getContentPane()
)的布局。 尝试:
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));