2011-12-20 28 views
1

私は、改造パッチを適用し、テクスチャパックをMinecraftに追加するためのJavaアプリケーションを作成しています。 DJ Project JWebBrowserを介してアクセスできるオンラインのMODストアを使用したいと思っています。私はUIを構築するためにEclipseのWindowBuilder /手作業コーディングを使用しています。私の問題はWindowBuilderは、奇妙なことに、それは私が正常にそれを実行した場合、それだけで正常に動作します動作することで、次のエラーEclipse WindowBuilderバグ?

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) 

でクラッシュということです。関連するソースコードは次のとおりです。

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(); 

そして、私がここにいる間、mntmQuitボタンは何もしません。私はそれをデバッグし、それをクリックしたときにmouseClickedイベントを実行することさえできませんでした。 私はJava 1.6、WindowBuilder 1.2.0.r37、Eclipse Indigoを使用しています。

+0

うわー、それは深刻なインデントです!違反行である845行はどれですか? – Paul

+0

私が使った[DJプロジェクトライブラリ](http://djproject.sourceforge.net/main/index.html)の一部です – Mika

+0

ああ、そうです。 「普通に走れば」とはどういう意味ですか?何が普通ですか? – Paul

答えて

3

私はあなたの質問の半分に答えることができます - 私は残りの部分を解明します。

ActionListenerJMenuItemに、MouseListenerには添付する必要があります。いくつかの非常に良い例については、OracleのチュートリアルHow to Use Menusを参照してください。

+0

ありがとうございます。それはたくさんの助けになりました! – Mika

1

実際には、例外に基づいて、chrriis.dj.nativeswing.swtimpl.core.SWTNativeComponentクラスが問題を引き起こし、WindowBuilderがエラーをトラップしたように見えます。私はそれがデザインページ(デザインされているように)にこれを示し、実際にはクラッシュしなかったと仮定します。

@Paul - WindowBuilderはすでに非常に明確でメンテナンス可能なコードを生成しているので、それを「ディッチ」する理由はありません。手作りのモッズとの互換性も非常に高いので、ソースやデザインモードで簡単に前後に作業でき、WBはいつも同期しています。

+0

ええ、それはデザインページに表示されていましたが、なぜwindowbuilderがエラーを表示し、javaが表示されないのか分かりません。 – Mika

関連する問題