Java WindowBuilder - >导出为.jar(Runnable或Applet)

时间:2012-05-31 00:51:19

标签: java swing user-interface jar executable

我为Eclipse 3.7安装了WindowBuilder插件。

我使用各种方法(JFrame,JPanel,Application等)创建了一个非常简单的GUI。我试图将我的项目导出为可运行的JAR / .jar文件。我必须选择主类:它没有显示任何选择!导出仍然有效,但该文件无用。

如何正确导出GUI类?

编辑:似乎我需要一个main方法来使类出现在主类列表中。但问题是,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);

    }
}

如果我在这里创建一个main方法,我就无法创建我的JApplet,因为它不允许在静态main方法中引用它的非静态构造函数。至少我不知道该怎么做。那么我该如何将这个非常简单的一个类程序导出到一个可运行的.jar或一个小程序呢?

@Andrew:“应用程序”意味着WindowBuilder-> Swing Designer菜单中的一个选项。实际上它叫做Application Window,还有JApplet,JFrame,JDialog等。 我想有一些可执行的东西,我可以带到另一台PC或通过网络运行,所以我不必处理使用cmd窗口执行粗略的事情......

2 个答案:

答案 0 :(得分:3)

试试这个,这是在eclipse中创建jar或runnable 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

答案 1 :(得分: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;
    }
}