退出按钮java
我正在IntelliJ上构建一个Java GUI,并制作一个“退出”按钮——目前正在使用退出按钮java,java,swing,user-interface,intellij-idea,Java,Swing,User Interface,Intellij Idea,我正在IntelliJ上构建一个Java GUI,并制作一个“退出”按钮——目前正在使用 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class gui extends JFrame { priv
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class gui extends JFrame {
private JPanel mainPanel;
private JButton exitButton;
public gui(String title) {
super(title);
exitButton = new JButton("Exit");
exitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(mainPanel);
this.pack();
}
public static void main(String[] args) {
JFrame frame = new gui("Emro GUI");
frame.setVisible(true);
}
}
代码在运行,我在youtube上遵循了一个确切的教程,但是退出按钮不起作用,我不确定为什么。我应该在新类或函数中使用exit按钮吗 在适当的位置添加以下三行将使其工作正常
import javax.swing.*;
mainPanel = new JPanel();
mainPanel.add(exitButton);
然而:
- Swing应该始终从AWT事件调度线程(EDT)使用(使用
)java.AWT.EventQueue.invokeLater
- 无需扩展
JFrame
- 不需要将
和mainPanel
作为字段而不是本地字段exitButton
- 对
使用lambda表达式ActionListener
import javax.swing.*;
mainPanel = new JPanel();
mainPanel.add(exitButton);
然而:
- Swing应该始终从AWT事件调度线程(EDT)使用(使用
)java.AWT.EventQueue.invokeLater
- 无需扩展
JFrame
- 不需要将
和mainPanel
作为字段而不是本地字段exitButton
- 对
使用lambda表达式ActionListener
WindowEvent closeWindowEvent=newwindowevent(frame,WindowEvent.WINDOW\u CLOSING);frame.dispatchEvent(closeWindowEvent);
您是否在操作侦听器方法中尝试过此方法:
WindowEvent closeWindowEvent=newwindowevent(frame,WindowEvent.WINDOW\u CLOSING);frame.dispatchEvent(closeWindowEvent)
如果您在IntelliJ IDEA中使用GUI设计器并将表单按钮绑定到类字段,则无需在代码中再次初始化按钮,因此应删除这一行:exitButton=new JButton(“Exit”);
“但Exit按钮不起作用”那么当前的行为是什么呢?您也不需要扩展JFrame
部分,因为您没有覆盖它的行为。请遵循(FirstWordUpperCaseClass
,firstWordLowerCaseVariable
,firstWordLowerCaseMethod()
和所有单词大写字母常量
)。如果您在IntelliJ IDEA中使用GUI设计器并将表单按钮绑定到类字段,则无需在代码中再次初始化按钮,因此应删除这一行:exitButton=new JButton(“Exit”);
“但Exit按钮不起作用”那么当前的行为是什么呢?您也不需要扩展JFrame
部分,因为您没有覆盖它的行为。请遵循(FirstWordUpperCaseClass
,firstWordLowerCaseVariable
,firstWordLowerCaseMethod()
和所有单词大写字母常量
)。“mainPanel和exitButton不需要是字段而不是本地字段"。当使用IntelliJ IDEA GUI designer为用户生成初始化这些字段的代码时,情况并非如此。问题表明使用了GUI designer,请参阅我的评论以了解问题的可能原因。@CrazyCoder尽管您可能无法对此做任何事,但这些都是有效的观点,我建议您不要使用GUI设计师随着您对代码的了解和控制能力的提高,无法相信设计师会生成这样的狗屎代码,但无论哪种方式,都不需要向下投票,所有这些都是需要记住的有效点。+1“不需要将mainPanel和exitButton作为字段而不是本地字段”。当使用IntelliJ IDEA GUI designer为用户生成初始化这些字段的代码时,情况并非如此。问题表明使用了GUI designer,请参阅我的评论以了解问题的可能原因。@CrazyCoder尽管您可能无法对此做任何事,但这些都是有效的观点,我建议您不要使用GUI设计师随着您了解更多信息并更好地控制您的代码,不敢相信设计师会生成这样的狗屎代码,但无论如何都不需要否决,所有这些都是需要记住的有效点。+1从未意识到这个问题太老了从未意识到这个问题太老了