import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Test extends JFrame{
JLabel label = new JLabel("Leann will come again");
JButton yesButton = new JButton("Yes");
JButton noButton = new JButton("Yes");
JPanel panel = new JPanel();
public Test(){
panel.add(label);
panel.add(yesButton);
panel.add(noButton);
add(panel);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addAction();
}
public void addAction(){
yesButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "Are you sure?");
}
});
noButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "Too bad!");
}
});
}
public static void main(String args[]){
Test app = new Test();
}
}
当我在带有eclipse的ubuntu计算机上运行它时,它会停止(终止)而没有任何错误。控制台中也没有错误。并且没有语法错误。
出了什么问题?是因为我运行openjdk吗?
答案 0 :(得分:4)
您没有将框架设置为可见setVisible(true)
您应该查看本教程:http://download.oracle.com/javase/tutorial/uiswing/components/frame.html
答案 1 :(得分:3)
你正在创建一个Test实例,但就是这样。你实际上从未尝试显示它。
如果您拨打app.setVisible(true)
,则会显示,并且通话将被阻止。
答案 2 :(得分:2)
您需要在Test实例上调用setVisible(true)。最好在另一个线程中运行此代码。
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Test app = new Test();
app.setVisible(true);
}
}
}
答案 3 :(得分:1)
在构造函数的末尾添加此行:
setVisible(true);
否则JFrame
永远不会显示,程序退出。您可能也希望取消注释setDefaultCloseOperation
位 - 尽管这与您的问题无关。