Java Eclipse WindowBuilder错误?
我正在制作一个java应用程序,用于修补MOD并将纹理包添加到Minecraft中。我希望它使用通过DJ项目JWebBrowser访问的在线mod商店。我正在使用EclipseWindowBuilder/手工编码来构建UI。我的问题是WindowBuilder崩溃时出现以下错误Java Eclipse WindowBuilder错误?,java,swing,windowbuilder,Java,Swing,Windowbuilder,我正在制作一个java应用程序,用于修补MOD并将纹理包添加到Minecraft中。我希望它使用通过DJ项目JWebBrowser访问的在线mod商店。我正在使用EclipseWindowBuilder/手工编码来构建UI。我的问题是WindowBuilder崩溃时出现以下错误 Stack trace: java.lang.IllegalArgumentException: Width (125) and height (0) cannot be <= 0 at java.
Stack trace:
java.lang.IllegalArgumentException: Width (125) and height (0) cannot be <= 0
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source)
at java.awt.image.BufferedImage.<init>(Unknown Source)
at chrriis.dj.nativeswing.swtimpl.core.SWTNativeComponent.print(SWTNativeComponent.java:845)
at sun.awt.windows.WComponentPeer.print(Unknown Source)
at java.awt.GraphicsCallback$PeerPrintCallback.run(Unknown Source)
at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
at java.awt.Component.printAll(Unknown Source)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils$2.run(SwingImageUtils.java:104)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.runInDispatchThread(SwingImageUtils.java:554)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.createComponentShotAWT(SwingImageUtils.java:102)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.makeShotsHierarchy(SwingImageUtils.java:235)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.makeShotsHierarchy(SwingImageUtils.java:261)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.makeShotsHierarchy(SwingImageUtils.java:261)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.makeShotsHierarchy(SwingImageUtils.java:261)
at org.eclipse.wb.internal.swing.utils.SwingImageUtils.makeShotsHierarchy(SwingImageUtils.java:261)
当我在这里时,mntmQuit按钮没有任何作用。我调试了它,当我点击它时,它甚至没有运行mouseClicked事件。
我正在使用Java1.6、WindowBuilder1.2.0.r37、EclipseIndigo,任何帮助都将不胜感激 我可以回答你一半的问题-也许通过澄清我可以解决剩下的问题
您需要将
ActionListener
附加到JMenuItem
,而不是MouseListener
。有关一些非常好的示例,请参阅Oracle教程。我可以回答您一半的问题-也许通过澄清,我可以解决其余的问题
您需要将
ActionListener
附加到JMenuItem
,而不是MouseListener
。有关一些非常好的示例,请参见Oracle教程。实际上,根据异常情况,它看起来像是chrriis.dj.nativeswing.swtimpl.core.SWTNativeComponent类导致了问题,WindowBuilder为您捕获了错误。我假设它在设计页面上向您展示了这一点(正如它被设计的那样),实际上并没有“崩溃”
@Paul-WindowBuilder已经生成了非常清晰且易于维护的代码,因此没有理由“抛弃”它。它还与手工制作的mods极为兼容,因此您可以轻松地在源代码或设计模式下来回工作,WB将始终保持两者的同步。实际上,根据例外情况,它看起来像是chrriis.dj.nativeswing.swtimpl.core.SWTNativeComponent类导致了问题,WindowBuilder为您捕获了错误。我假设它在设计页面上向您展示了这一点(正如它被设计的那样),实际上并没有“崩溃”
@Paul-WindowBuilder已经生成了非常清晰且易于维护的代码,因此没有理由“抛弃”它。它还与手工制作的MOD极为兼容,因此您可以轻松地在源代码或设计模式下来回工作,WB将始终保持两者的同步。哇,这是一个严重的缩进!哪一行是845行,冒犯的那一行?这是我使用的部分,好的。你说的“如果我正常运行”是什么意思?通常是什么?在Eclipse中作为java应用程序运行,而不是在WindowBuilder中预览。我不会担心它在WindowBuilder预览中崩溃。如果从命令行运行它时工作正常,那么就很好了。我建议抛弃GUI创建者,全部手工编写。您可能可以使用
BorderLayout
和BoxLayout
或Box
组件创建所需内容。您的代码将更干净,更易于维护。哇,这是一些严重的缩进!哪一行是845行,冒犯的那一行?这是我使用的部分,好的。你说的“如果我正常运行”是什么意思?通常是什么?在Eclipse中作为java应用程序运行,而不是在WindowBuilder中预览。我不会担心它在WindowBuilder预览中崩溃。如果从命令行运行它时工作正常,那么就很好了。我建议抛弃GUI创建者,全部手工编写。您可能可以使用BorderLayout
和BoxLayout
或Box
组件创建所需内容。您的代码将更干净、更易于维护。是的,它在设计页面中显示,但我不确定为什么windowbuilder会显示错误而java不会。是的,它在设计页面中显示,但我不确定windowbuilder为什么会显示错误而java不会。
setTitle("OpenMPatch");
getContentPane().setLayout(new BorderLayout(0, 0));
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
getContentPane().add(tabbedPane);
JPanel tabModStore = new JPanel();
tabbedPane.addTab("Mod Store", null, tabModStore, "Mod Store");
JWebBrowser modStore = new JWebBrowser();
modStore.setStatusBarVisible(false);
tabModStore.add(modStore);
JPanel tabSettings = new JPanel();
tabbedPane.addTab("Settings", null, tabSettings, "Settings");
comboBoxTheme = new JComboBox();
comboBoxTheme.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
setLAF(comboBoxTheme.getSelectedItem().toString());
}
});
comboBoxTheme.setModel(new DefaultComboBoxModel(new String[] {
"system", "java", "motif", "nimbus", "windows",
"windowsclassic" }));
try {
comboBoxTheme.setSelectedItem(Config.ReadConfig().get("LAF"));
} catch (Exception e) {
e.printStackTrace();
OpenMPatch.error(e);
}
JLabel lblTheme = new JLabel("Theme:");
lblTheme.setLabelFor(comboBoxTheme);
lblTheme.setFont(new Font("Tahoma", Font.PLAIN, 12));
lblTheme.setHorizontalAlignment(SwingConstants.RIGHT);
JButton btnSaveSettings = new JButton("Save Settings");
btnSaveSettings.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
saveSettings();
}
});
JButton btnRestoreDefualts = new JButton("Restore Defualts");
btnRestoreDefualts.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
try {
Config.restoreDefualts();
updateSettings();
} catch (Exception e) {
e.printStackTrace();
error(e);
}
}
});
// Generated by WindowBuilder
GroupLayout gl_tabSettings = new GroupLayout(tabSettings);
gl_tabSettings
.setHorizontalGroup(gl_tabSettings
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_tabSettings
.createSequentialGroup()
.addContainerGap()
.addGroup(
gl_tabSettings
.createParallelGroup(
Alignment.LEADING)
.addGroup(
gl_tabSettings
.createSequentialGroup()
.addComponent(
lblTheme)
.addPreferredGap(
ComponentPlacement.RELATED)
.addComponent(
comboBoxTheme,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE))
.addGroup(
gl_tabSettings
.createSequentialGroup()
.addComponent(
btnSaveSettings)
.addPreferredGap(
ComponentPlacement.RELATED)
.addComponent(
btnRestoreDefualts)))
.addContainerGap(365, Short.MAX_VALUE)));
gl_tabSettings
.setVerticalGroup(gl_tabSettings
.createParallelGroup(Alignment.LEADING)
.addGroup(
gl_tabSettings
.createSequentialGroup()
.addContainerGap()
.addGroup(
gl_tabSettings
.createParallelGroup(
Alignment.BASELINE)
.addComponent(lblTheme)
.addComponent(
comboBoxTheme,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE))
.addGap(18)
.addGroup(
gl_tabSettings
.createParallelGroup(
Alignment.BASELINE)
.addComponent(
btnSaveSettings)
.addComponent(
btnRestoreDefualts))
.addContainerGap(274, Short.MAX_VALUE)));
tabSettings.setLayout(gl_tabSettings);
JPanel statusBar = new JPanel();
statusBar.setToolTipText("Status");
getContentPane().add(statusBar, BorderLayout.SOUTH);
setIconImage(Toolkit.getDefaultToolkit().getImage(
OpenMPatch.class.getResource("/alex/mik/openmpatch/icon.png")));
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem mntmOpenFile = new JMenuItem("Open File...");
mntmOpenFile.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent paramMouseEvent) {
}
});
mntmOpenFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
mnFile.add(mntmOpenFile);
JMenuItem mntmOpenFolder = new JMenuItem("Open Folder...");
mntmOpenFolder.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK));
mnFile.add(mntmOpenFolder);
JSeparator fileSeparator1 = new JSeparator();
mnFile.add(fileSeparator1);
JMenuItem mntmQuit = new JMenuItem("Quit");
mntmQuit.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
close();
}
});
mntmQuit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
mnFile.add(mntmQuit);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();