我为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窗口执行粗略的事情......
答案 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;
}
}