Java GUI关闭问题?
我有一个程序,它显示两个按钮,并在翻滚时更改其中一个按钮的图像。我的电脑出现了一个错误Java GUI关闭问题?,java,swing,user-interface,Java,Swing,User Interface,我有一个程序,它显示两个按钮,并在翻滚时更改其中一个按钮的图像。我的电脑出现了一个错误 press.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 部分,看起来是这样的:类型ButtonClass的方法setDefaultCloseOperation(int)未定义。即使关闭时退出,也会出现更多错误,请帮助 主类(有错误): ButtonClass类: package Buttons; import java.awt.FlowLayout; /
press.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
部分,看起来是这样的:类型ButtonClass的方法setDefaultCloseOperation(int)未定义。即使关闭时退出,也会出现更多错误,请帮助
主类(有错误):
ButtonClass类:
package Buttons;
import java.awt.FlowLayout; //layout proper
import java.awt.event.ActionListener; //Waits for users action
import java.awt.event.ActionEvent; //Users action
import javax.swing.JFrame; //Window
import javax.swing.JButton; //BUTTON!!!
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane; //Standard dialogue box
public class ButtonClass extends JButton {
private JButton regular;
private JButton custom;
public ButtonClass() { // Constructor
super("The title"); // Title
setLayout(new FlowLayout()); // Default layout
regular = new JButton("Regular Button");
add(regular);
Icon b = new ImageIcon(getClass().getResource("img.png"));
Icon x = new ImageIcon(getClass().getResource("swag.png"));
custom = new JButton("Custom", b);
custom.setRolloverIcon(x); //When you roll over the button that says custom the image will change from b to x
add(custom);
Handlerclass handler = new Handlerclass();
regular.addActionListener(handler);
custom.addActionListener(handler);
}
private class Handlerclass implements ActionListener { // This class is inside the other class
public void actionPerformed(ActionEvent eventvar) { // This will happen
// when button is
// clicked
JOptionPane.showMessageDialog(null, String.format("%s", eventvar.getActionCommand()));//Opens a new window with the name of the button
}
}
}
我到处找这个问题,什么也没找到。请告诉我如何解决有关退出窗口的问题。
谢谢 该方法是为
JFrame
而不是JButton
定义的。您在一个类的实例上调用它,该类扩展了JButton
该方法是为JFrame
定义的,而不是JButton
。您在一个扩展了JButton的类的实例上调用它,您在创建一个扩展JButton的类时有点困惑,并且在它上调用setVisible(true)
,就好像它是一个顶级窗口,比如JFrame或JDialog,这是没有意义的。因为它不是顶级窗口,所以不使用默认的关闭操作或者不理解这意味着什么也是有意义的
我建议您仅在顶级窗口(如JFrame或JDialog等)上调用此方法。作为附带建议,我通常避免setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)而更多的是执行setDefaultCloseOperation(JFrame.DISPOSE\u ON\u CLOSE)代码>这给了它更多的灵活性
编辑:实际上,只需将类更改为extensedjframe而不是extensedjbutton
确保资源的映像路径正确。例如:
当您创建一个扩展JButton的类,并在其上调用setVisible(true)
时,您有点困惑,好像它是一个顶级窗口,如JFrame或JDialog,这没有意义。因为它不是顶级窗口,所以不使用默认的关闭操作或者不理解这意味着什么也是有意义的
我建议您仅在顶级窗口(如JFrame或JDialog等)上调用此方法。作为附带建议,我通常避免setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)而更多的是执行setDefaultCloseOperation(JFrame.DISPOSE\u ON\u CLOSE)代码>这给了它更多的灵活性
编辑:实际上,只需将类更改为extensedjframe而不是extensedjbutton
确保资源的映像路径正确。例如:
JFrame.Exit\u on\u close必须在JFrame中使用,并且您正在从JButton进行扩展
要设置一个JButton来关闭JFrame,它是这样的
public class MyClass extends JFrame implements ActionListener{
private JButton button = new JButton("Button");
private JPanel panel = new JPanel();
public static void main(String args[]) {
new MyClass();
}
public MyClass() {
setSize(300, 300);
button.addActionListener(this);
panel.add(button);
add(panel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
this.dispose();
}
}
JFrame.Exit_on_close必须在JFrame中使用,并且您是从JButton进行扩展的
要设置一个JButton来关闭JFrame,它是这样的
public class MyClass extends JFrame implements ActionListener{
private JButton button = new JButton("Button");
private JPanel panel = new JPanel();
public static void main(String args[]) {
new MyClass();
}
public MyClass() {
setSize(300, 300);
button.addActionListener(this);
panel.add(button);
add(panel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
this.dispose();
}
}
你想退出一个按钮吗?不,我不想退出窗口,它由一个按钮组成。这是在这里完成的,对吗?按.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);我应该把那个部分放在哪里?public class button类扩展JButton
No,它不是一个JFrame。所以你想退出一个按钮吗?不,我不想退出包含按钮的窗口。这是在这里完成的,对吗?按.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);我应该把那部分放在哪里?公共类按钮class扩展了JButton
不,它不是JFrame。那么我该怎么称呼它呢?那么我该怎么称呼它呢?谢谢你这么多充满鳗鱼的气垫船,最初的错误消失了,但现在我有了这个错误:线程“main”中的异常java.lang.NullPointerException位于javax.swing.ImageIcon。(未知源)位于Buttons.ButtonClass。(ButtonClass.java:24)位于Buttons.Main_Buttons.Main(Main_Buttons.java:8)请解释如何修复它。非常感谢你!我想那一行可能仍然有编译器错误。。。?请help@Billybobsteven:当代码编译并运行时,此异常不是编译器错误。你的图片找不到,因为你可能找不到合适的位置。太棒了!非常感谢你,它成功了!在网上搜索了几天之后,我找到了答案!我已经标记了您的最佳答案,并将在我获得15个声誉后立即点击“喜欢”按钮!不过我还有一个问题:我的自定义按钮比常规按钮大得多,我能改变大小并保持图像(和翻滚图像)的比例吗?再一次,我非常感谢你付出的辛勤工作和时间,做出了如此谨慎而有益的回答!谢谢你这么多充满鳗鱼的气垫船,最初的错误消失了,但现在我有了这个错误:javax.swing.ImageIcon的线程“main”java.lang.NullPointerException中的异常。(未知源代码)在Buttons.ButtonClass。(ButtonClass.java:24)在Buttons.main_Buttons.main(Main_buttons.java:8)请解释如何修复它。非常感谢!我想那一行可能仍然有编译器错误…?请help@Billybobsteven:当您的代码编译并运行时,此异常不是编译器错误。找不到您的图像,因为您可能没有在正确的位置查找它们。太棒了!非常感谢您的帮助!之后在网上搜索了几天,我找到了答案!我已经为你标记了最佳答案,并将在我获得15个声誉后立即点击“like”按钮!不过我还有一个问题:我的自定义按钮比常规按钮大得多,我可以更改大小并保留图像(和翻滚图像)吗相称?再一次,我非常感谢你付出的辛勤工作和时间,做出了如此谨慎而有益的回答!