我试图通过一个简单的GUI来处理ActionListeners和内部类,用户将按下一个按钮,这将导致消息的显示。
我的代码编译-然而,在启动时,图标将出现在我的托盘(OSX),但随后立即终止。我的控制台中没有出现错误。
这是我的代码:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class GUI {
private JFrame myFrame;
private JPanel messagePanel;
private JPanel buttonPanel;
private JLabel myMessage;
public GUI() {
myFrame = new JFrame("My GUI");
messagePanel = new JPanel();
buttonPanel = new JPanel();
myMessage = new JLabel();
myFrame.setLayout(new BorderLayout());
myFrame.setSize(500, 500);
myFrame.add(messagePanel, BorderLayout.SOUTH);
myFrame.add(buttonPanel, BorderLayout.CENTER);
messagePanel.add(myMessage);
addButtons();
}
public void addButtons() {
JButton button1 = new JButton(new ImageIcon("circle.png"));
buttonPanel.add(button1);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
myMessage.setText("Button pressed!");
}
});
}
public static void main(String[] args) {
GUI myGUI = new GUI();
}
}这里发生了什么事?
发布于 2014-06-24 23:13:02
您需要通过JFrame,myFrame,通过myFrame.setVisible(true);使其可见
此外,您不应该在事件调度线程(EDT)之外运行任何与Swing GUI相关的代码。启动程序的正确方法是:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI myGUI = new GUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}发布于 2014-06-24 23:12:47
在构造函数中的addButtons()之后,添加以下语句:
myFrame.setVisible(true);https://stackoverflow.com/questions/24397782
复制相似问题