我不是一个拥有摆动布局管理器的职业,这种行为完全让我莫名其妙。基本上我不能添加一个JTextArea或JTextPane到我的MigLayout而没有得到NullPointerException。MigLayout中的JTextArea导致NullPointerException异常
我创建的扩展JPanel类:
public ComponentPanel(TestComponent testComponent) {
setLayout(new MigLayout("", "[]", "[][][][][][]"));
JLabel lblNewLabel = new JLabel("New label");
add(lblNewLabel, "cell 0 0");
JButton button = new JButton("New button");
add(button, "cell 0 3");
JButton btnNewButton = new JButton("New button");
add(btnNewButton, "cell 0 5");
}
这工作得很好。但是,如果我尝试添加一个文本区域,它会抛出一个异常时,我尝试建立:
public ComponentPanel(TestComponent testComponent) {
setLayout(new MigLayout("", "[grow]", "[][grow][][][][]"));
JLabel lblNewLabel = new JLabel("New label");
add(lblNewLabel, "cell 0 0");
JTextArea textArea = new JTextArea();
add(textArea, "cell 0 1,grow");
JButton button = new JButton("New button");
add(button, "cell 0 3");
JButton btnNewButton = new JButton("New button");
add(btnNewButton, "cell 0 5");
}
我使用的是橱窗设计师在Eclipse中,所以我假设的东西是horking了MigLayout构造?我一直在打我的头这一段时间,所有我已经设法搞清楚的是,添加文本区域或textPanes导致以下异常:
显示java.lang.NullPointerException在 javax.swing.BoxLayout中。 preferredLayoutSize(Unknown Source) java.awt.Container.preferredSize(Unknown Source) javax.swing.JComponent.getPreferredSize(Unknown Source)at javax.swing。 JRootPane $ RootLayout.preferredLayoutSize(未知源) 位于java.awt.Container.preferredSize(未知源)位于 java.awt.Container.getPreferredSize(未知源)在 javax.swing.JComponent.getPreferredSize(Unknown Source)at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)at java.awt.Container.preferredSize(Unknown Source)at java.awt.Container.getPreferredSize(Unknown Source )在 net.miginfocom.swing.MigLayout.adjustWindowSize(未知来源)处 net.miginfocom.swing.MigLayout.preferredLayoutSize(未知来源) net.miginfocom.swing.MigLayout.layoutContainer(未知来源)在 的java。 awt.Container.preferredSize(Unknown Source)at java.awt.Container.getPreferredSize(Unknown Source)at javax.swing.JComponent.getPreferredSize(Unknown Source)at javax.swing.BoxLayout.checkRequests(Unknown Source)at javax.swing.BoxLayout.layoutContainer(未知来源)在处 java.awt.Container.validateTree java.awt.Container.doLayout(未知来源) java.awt.Container.layout(未知源)(未知源)在 java.awt.Container.validateTree(未知来源)处 java.awt.Container.validateTree(未知来源) java.awt.Container.validateTree(未知来源)在 java.awt.Container.validate( (Unknown Source)at java.awt.Window.show(Unknown Source)at java.awt.Component.show(Unknown Source)at java.awt.Component.setVisible(Unknown Source)at java.awt.Window。 setVisible(Unknown Source)在 com。 soartech.ssim.testbed.gui.TestbedApplication $ 1.run(TestbedApplication.java:25) at java.awt.event.InvocationEvent.dispatch(Unknown Source)at java.awt.EventQueue.dispatchEventImpl(Unknown Source)at java .awt.EventQueue.access $ 000(Unknown Source)at java.awt.EventQueue $ 1.run(Unknown Source)at java.awt.EventQueue $ 1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native方法)位于 java.acurity.AccessControlContext $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java.awt.EventDispatchThread。pumpOneEventForFilters(未知来源)在java.awt.EventDispatchThread.pumpEvents 在java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 源)(未知源) 在java.awt中。 EventDispatchThread.pumpEvents(未知来源)在 java.awt.EventDispatchThread.run(未知来源)异常螺纹 “AWT-EventQueue的-0” 显示java.lang.NullPointerException在 javax.swing.SizeRequirements.calculateTiledPositions(未知来源) 位于javax.swing.BoxLayout.layoutContainer(未知源),位于 java.awt.Container.layout(未知源),位于 java.awt.Container.doLayout(未知源),位于 java.awt.Container.validateTree(Unknown Source)at java.awt.Container.validateTree(Unknown Source)at java.awt.Container.validateTree(Unknown Source)at java.awt.Container.validateTree(Unknown Source) java.awt.Container.validate(Unknown Source)at java.awt.Window.dispatchEventImpl(Unknown Source)at java.awt.Component.dispatchEvent(Unknown Source)at java.awt.EventQueue.dispatchEventImpl(Unknown源)在 java.awt.EventQueue.access $ 000(未知源)在 java.awt.EventQueue $ 1.run(未知源)在 java.awt.EventQueue $ 1.run(未知源)在 java.security。 AccessController.doPrivileged(本机方法) java.security.AccessControlContext $ 1.doIntersectionPrivilege(未知 源)在 java.security.AccessControlContext $ 1.doIntersectionPrivilege(未知 源)在java.awt.EventQueue中$ 2.run(未知来源)在 java.awt.EventQueue中$ 2 .run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.security.AccessControlContext $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java。 awt.EventDispatchThread.pumpOneEventForFilters at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 0源)处 java.awt.EventDispatchThread.run(未知来源)
如果您将JTextArea更改为其他组件,如按钮,标签等,它是否工作? – Alanmars 2012-01-18 03:38:52