2012-05-31 137 views
0

我安裝了Eclipse 3.7的WindowBuilder插件。Java WindowBuilder - >導出爲.jar(Runnable或Applet)

我創建了一個非常簡單的GUI與各種方法(JFrame,JPanel,應用程序等)。我試圖將我的項目導出爲可運行的JAR/a .jar文件。我必須選擇主類:它不顯示任何選擇!導出仍然有效,但文件無用。

如何正確導出我的GUI類?

編輯:似乎我需要一個主要的方法,使類顯示在主類列表中。但問題是,的WindowBuilder創建這樣的一個類:

import javax.swing.JApplet; 
import javax.swing.JButton; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 


public class myGuiClass extends JApplet { 

    /** 
    * Create the applet. 
    */ 
    public myGuiClass() { 
     getContentPane().setLayout(null); 

     JButton btnMybutton = new JButton("myButton"); 
     btnMybutton.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       System.out.println("Button pressed!"); 
      } 
     }); 
     btnMybutton.setBounds(10, 11, 91, 23); 
     getContentPane().add(btnMybutton); 

    } 
} 

如果我在這裏創建一個主要的方法,我不能創建我的JApplet的,因爲它不允許引用其非靜態構造函數靜態主方法。至少我不知道該怎麼做。那麼我該如何將這個非常簡單的類程序導出爲可運行的.jar或applet?

@Andrew:「應用程序」是指WindowBuilder-> Swing Designer菜單中的一個選項。這實際上叫做Application Window,還有JApplet,JFrame,JDialog等等。 我想有一些可執行文件,我可以將它帶到另一臺PC或通過網絡運行,所以我不必處理使用cmd窗口執行原始操作的原始代碼...

+2

是否有類有一個'公共靜態主( String [] args)'方法?另外,什麼是「應用程序」?它不是J2SE的一部分。順便說一句 - 在考慮一個小程序之前解決這個問題。小程序通常不是問題的解決方案,而是引入更多問題。 –

+0

嘿,謝謝你的回答。事實上,我只用一個課就嘗試過,並且沒有它沒有主要的方法。它似乎需要一個出現在主類列表中,但有一個問題,我編輯了上面的問題 - > – br0t

回答

1

嘗試此代碼 - 可以作爲applet或自由浮動(基於框架)的應用程序。

import java.awt.FlowLayout; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.border.EmptyBorder; 

/** This is an hybrid application/applet. It can be run 
* as either a JFrame or JApplet. */ 
public class MyGuiApp extends JApplet { 

    /** Construct the GUI for an applet. */ 
    public void init() { 
     try { 
      SwingUtilities.invokeAndWait(new Runnable() { 
       public void run() { 
        GUI gui = new GUI(); 
        getContentPane().add(gui.getGui()); 
       } 
      }); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    /** Launch the GUI in a frame. */ 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run() { 
       JFrame f = new JFrame("My GUI"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       GUI gui = new GUI(); 
       f.getContentPane().add(gui.getGui()); 
       f.pack(); 
       f.setLocationByPlatform(true); 
       f.setVisible(true); 
      } 
     }); 
    } 
} 

class GUI { 

    public JComponent getGui() { 
     // Use layouts! .. 
     JPanel p = new JPanel(new FlowLayout(FlowLayout.LEADING)); 
     // ..possibly with borders. 
     p.setBorder(new EmptyBorder(10,10,10,10)); 

     JButton btnMybutton = new JButton("myButton"); 
     btnMybutton.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       System.out.println("Button pressed!"); 
      } 
     }); 
     p.add(btnMybutton); 
     return p; 
    } 
} 
3

試試這個,這是在Eclipse中創建一個罐子或運行的JAR的方式,在項目所有的外部庫將包含

File -> Export-> Java ->Runnbale JAR file 

Launch configuration : your Class containing the public static void main(String[] args) 

Export destination : Target place 

Library Handling: 

Package required libraries into generated JAR 

FINISH 
+0

'將所需的庫包裝到生成的JAR中'啊。'Fat Jar'(原則上,如果不是商品名稱)。對於[JWS](http://stackoverflow.com/tags/java-web-start/info)部署的應用程序(即使對於嵌入式小應用程序而言這種應用程序正變得越來越普遍)不是最佳的。 –