我不是一個擁有擺動佈局管理器的職業,這種行爲完全讓我莫名其妙。基本上我不能添加一個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