私はスイングレイアウトマネージャーのプロではなく、この振る舞いは私を完全に困惑させています。基本的に、NullPointerExceptionを取得せずに、JTextAreaまたはJTextPaneをMigLayoutに追加することはできません。
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");
}
これは正常に機能します。ただし、textAreaを追加しようとすると、ビルドしようとすると例外がスローされます。
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でWindowDesignerを使用しているので、何かがMigLayoutコンストラクターを起動していると思いますか?私はしばらくの間これに頭を悩ませてきました、そして私が理解することができたのは、textAreaまたはtextPanesを追加すると次の例外が発生するということだけです:
java.awt.Container.preferredSize(Unknown Source)at java.awt.Container.getPreferredSize(Unknown Source)at javax.swing.JComponent.getPreferredSize( Unknown Source)at javax.swing.JRootPane $ RootLayout.preferredLayoutSize(Unknown Source)at java.awt.Container.preferredSize(Unknown Source)at java.awt.Container.getPreferredSize(Unknown Source)at javax.swing.JComponent.getPreferredSize(不明なソース)at java.awt.BorderLayout.preferredLayoutSize(不明なソース)at java.awt.Container.preferredSize(不明なソース)at java.awt.Container.getPreferredSize(不明なソース)at net.miginfocom.swing.MigLayout.adjustWindowSize(不明なソース)net.miginfocom.swing.MigLayoutにあります。layoutContainer(Unknown Source)at net.miginfocom.swing.MigLayout.preferredLayoutSize(Unknown Source)at java.awt.Container.preferredSize(Unknown Source)at java.awt.Container.getPreferredSize(Unknown Source)atjavax.swing.JComponent。 getPreferredSize(Unknown Source)at javax.swing.BoxLayout.checkRequests(Unknown Source)at javax.swing.BoxLayout.layoutContainer(Unknown Source)at java.awt.Container.layout(Unknown Source)at java.awt.Container.doLayout(不明なソース)at java.awt.Container.validateTree(不明なソース)at java.awt.Container.validateTree(不明なソース)at java.awt.Container.validateTree(不明なソース)at java.awt.Container.validateTree(不明なソース)java.awt.Container.validate(Unknown Source)at java.awt.Window.show(Unknown Source)atjava.awt.Component。show(Unknown Source)at java.awt.Component.setVisible(Unknown Source)at java.awt.Window.setVisible(Unknown Source)at 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(不明なソース)at java.awt.EventQueue $ 1.run(不明なソース)at java.security.AccessController.doPrivileged(ネイティブメソッド)at java.security.AccessControlContext $ 1.doIntersectionPrivilege(不明なソース)at java.awt.EventQueue.dispatchEvent(不明なソース)、java.awt.EventDispatchThread.pumpOneEventForFilters(不明なソース)、java.awt.EventDispatchThread。pumpEventsForFilter(Unknown Source)at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at java.awt.EventDispatchThread.run(不明なソース)スレッド「AWT-EventQueue-0」の例外java.lang.NullPointerException at javax.swing.SizeRequirements.calculateTiledPositions(Unknown Source)at javax.swing.BoxLayout.layoutContainer(Unknown Source)at java.awt.Container.layout (Unknown Source)at java.awt.Container.doLayout(Unknown Source)at 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)atjava.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 Source)atjava.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 Method)at java.security.AccessControlContext $ 1.doIntersectionPrivilege(Unknown Source)at java.security.AccessControlContext $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue $ 2.run(Unknown Source)at java.awt.EventQueue $ 2.run(Unknown Source)at java.security java.security.AccessControlContext $ 1の.AccessController.doPrivileged(ネイティブメソッド)。doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)at java.awt.EventDispatchThread.pumpEventsForHierarchy(不明なソース)at java.awt.EventDispatchThread.pumpEvents(不明なソース)at java.awt.EventDispatchThread.pumpEvents(不明なソース)at java.awt.EventDispatchThread.run(不明なソース)java.awt.EventDispatchThread.run(不明なソース)のEventDispatchThread.pumpEvents(不明なソース)java.awt.EventDispatchThread.run(不明なソース)のEventDispatchThread.pumpEvents(不明なソース)