2012-05-31 84 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)部署的应用程序(即使对于嵌入式小应用程序而言这种应用程序正变得越来越普遍)不是最佳的。 –