Я не профессионал с менеджерами компоновки свинга, и это поведение совершенно сбивает меня с толку.По сути, я не могу добавить JTextArea или JTextPane в мой MigLayout без получения 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");
}
Это прекрасно работает.Однако, если я попытаюсь добавить 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");
}
Я использую Window Designer в eclipse, поэтому я предполагаю, что что-то ускоряет работу MigLayoutконструктор?Некоторое время я бился головой об этом, и все, что мне удалось выяснить, это то, что добавление textArea или textPanes вызывает следующее исключение:
java.lang.NullPointerException at javax.swing.BoxLayout.preferredLayoutSize (Неизвестный источник) в java.awt.Container.preferredSize (Неизвестный источник) в java.awt.Container.getPreferredSize (Неизвестный источник) в javax.swing.JComponent.getPreferredSize (Неизвестный источник) в javax.swane $RootLayout.preferredLayoutSize (неизвестный источник) на java.awt.Container.preferredSize (неизвестный источник) на java.awt.Container.getPreferredSize (неизвестный источник) на javax.swing.JComponent.getPreferredSize (неизвестный источник) на java.awtor.предпочитаемый размер (неизвестный источник) в java.awt.Container.preferredSize (неизвестный источник) в java.awt.Container.getPreferredSize (неизвестный источник) в net.miginfocom.swing.MigLayout.adjustWindowSize (неизвестный источник) в net.miginfocom.swing.MigLayout.layoutContainer (неизвестный источник) по адресу net.miginfocom.swing.MigLayout.preferLayoutSize (неизвестный источник) в java.awt.Container.preferredSize (неизвестный источник) в java.awt.Container.getPreferredSize (неизвестный источник) в javax.swing.JComponent.getPreferredSize (неизвестный источник) в javax.swing.BoxLayout.cheНеизвестный источник) на javax.swing.BoxLayout.layoutContainer (Неизвестный источник) на java.awt.Container.layout (Неизвестный источник) на java.awt.Container.doLayout (Неизвестный источник) на java.awt.Container.validateTree (Неизвестный источник) на java.awt.Container.validateTree (неизвестный источник) на java.awt.Container.validateTree (неизвестный источник) на java.awt.Container.validateTree (неизвестный источник) на java.awt.Container.validate (неизвестный источник) наjava.awt.Window.show (неизвестный источник) на java.awt.Component.show (неизвестный источник) на java.awt.Component.setVisible (неизвестный источник) на java.awt.Window.setVisible (неизвестный источник) на ком.soartech.ssim.testbed.gui.TestbedApplication $ 1.run (TestbedApplication.java:25) на java.awt.event.InvocationEvent.dispatch (неизвестный источник) на java.awt.EventQueue.dispatchEventImpl (неизвестный источник) на 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.awt.EventQueue.dispatchEvent (неизвестный источник) в java.awt.EventDispatchThread.pilt.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 (неизвестный источник) на java.awt.Container.validateTree (неизвестный источник) на java.awt.Container.validateTree (неизвестный источник) наjava.awt.Container.validateTree (неизвестный источник) на java.awt.Container.validate (неизвестный источник) на java.awt.Window.dispatchEventImpl (неизвестный источник) на java.awt.Component.dispatchEvent (неизвестный источник) на java.awt.EventQueue.dispatchEventImpl (неизвестный источник) на 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.ruejava.awt.EventQueue $ 2.run (неизвестный источник) в java.security.AccessController.doPrivileged (собственный метод) в java.security.AccessControlContext $ 1.doIntersectionPrivilege (неизвестный источник) в java.awt.EventQueue.dispatchEventjava.awt.EventDispatchThread.pumpOneEventForFilters (неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForFilter (неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForHierarchy (неизвестный источник) в java.awt.EventDispatchThread.pumpEvents (неизвестный источник) в java.awt.EventDispatchThread.pumpEawt.run (Неизвестный источник)