GUI를 조금 익히고 간단한 것을 만들려고합니다. 그러나, 나는 단순한 "Exit"버튼을 만드는데 매달려있다. Eclipse 용 WindowsBuilder 플러그인을 사용하고 있습니다.나가기 버튼이 작동하지 않습니다.
private void initialize()
{
mainWindowFrame = new JFrame();
mainWindowFrame.setTitle("Lock and Log");
mainWindowFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(MainWindow.class.getResource("/lockandlog/main/resources/icon.png")));
mainWindowFrame.setResizable(false);
mainWindowFrame.setBounds(100, 100, 854, 480);
mainWindowFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindowFrame.getContentPane().setLayout(null);
final JTextArea logDisplay = new JTextArea();
logDisplay.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
logDisplay.setEditable(false);
logDisplay.setBounds(259, 11, 579, 250);
mainWindowFrame.getContentPane().add(logDisplay);
JLabel viewCmdDisplayLbl = new JLabel("View Command Display:");
viewCmdDisplayLbl.setFont(new Font("Tahoma", Font.BOLD, 11));
viewCmdDisplayLbl.setBounds(259, 272, 133, 14);
mainWindowFrame.getContentPane().add(viewCmdDisplayLbl);
JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
textArea.setBounds(259, 297, 579, 104);
mainWindowFrame.getContentPane().add(textArea);
JToolBar toolBar = new JToolBar();
toolBar.setBounds(0, 412, 848, 16);
mainWindowFrame.getContentPane().add(toolBar);
JPanel manualGrp = new JPanel();
manualGrp.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
manualGrp.setBounds(10, 11, 239, 72);
mainWindowFrame.getContentPane().add(manualGrp);
manualGrp.setLayout(null);
manualTxt = new JTextField();
manualTxt.setBounds(10, 7, 219, 20);
manualGrp.add(manualTxt);
manualTxt.setColumns(10);
JButton manualBtn = new JButton("Manual Override");
manualBtn.setFont(new Font("Tahoma", Font.BOLD, 12));
manualBtn.setBounds(10, 38, 219, 23);
manualGrp.add(manualBtn);
JMenuBar menuBar = new JMenuBar();
mainWindowFrame.setJMenuBar(menuBar);
final JMenu fileBtn = new JMenu("File");
fileBtn.addMouseListener(new MouseAdapter() //This works
{
@Override
public void mouseEntered(MouseEvent e)
{
fileBtn.setSelected(true);
}
@Override
public void mouseExited(MouseEvent e)
{
fileBtn.setSelected(false);
}
});
menuBar.add(fileBtn);
JMenuItem exitBtn = new JMenuItem("Exit");
//Code is definitely passing through here.
exitBtn.addMouseListener(new MouseAdapter() //This doesn't work?
{
@Override
public void mouseClicked(MouseEvent e)
{
logDisplay.setText("Test"); //This isn't even being called!
System.exit(0);
}
});
//Definitely adds the button so code is passing through here.
fileBtn.add(exitBtn);
}
지금은 전체 초기화 클래스입니다. 그러나 하단 근처에 메모가 있다면 종료 버튼 이벤트가 있습니다.이 이벤트를 클릭하면 프로그램이 종료됩니다. 단, 버튼을 클릭하면 아무 일도 일어나지 않습니다. 그와 같은 다른 이벤트를 fileBtn에서 시도해 보면 훌륭합니다. 그래서 내가 뭘 잘못하고 있니?
이유가 무엇입니까? 'ActionListener'에 대해서는 –
+1입니다. 또한 더 나은 정보와 작동 예제를 위해 [Menus 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html)의 스윙 튜토리얼을 읽는 것이 좋습니다. 코드를 구조화하십시오. 예를 들어 레이아웃 관리자 (setBounds()가 아님)를 사용해야하며 이벤트 발송 스레드에서 GUI를 만들어야합니다. – camickr
@KickButtowski 좋은 지적, 나는 나의 대답을 편집 할 것이다. – DreadHeadedDeveloper