我有一个显示两个按钮的程序,并在翻转时更改其中一个按钮的图像。我的
收到错误press.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
part,它看起来像这样:方法setDefaultCloseOperation(int)未定义ButtonClass类型。即使退出关闭已注释掉还有更多错误,请帮忙。
主类(有错误):
package Buttons;
import javax.swing.JFrame;
public class Main_buttons{
public static void main(String[] args) {
ButtonClass press = new ButtonClass();
press.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
press.setSize(300,200);
press.setVisible(true);
}
}
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
}
}
}
我到处寻找这个问题并没有发现任何东西。请告诉我如何解决退出窗口的问题。 谢谢!
答案 0 :(得分:3)
当你创建一个扩展JButton的类并在其上调用setVisible(true)
就好像它是顶级窗口(如JFrame或JDialog)时,你会感到有点困惑,这没有意义。由于它不是顶级窗口,因此没有默认的关闭操作或理解这意味着什么也是有意义的。
我建议您只在顶级窗口上调用此方法,例如在JFrame或JDialog等上。作为附带建议,我通常会避免使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
,而是更经常地setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
,这会使其更具灵活性。
编辑:实际上,只需更改您的类以扩展JFrame,而不是扩展JButton。
确保您的资源图片路径正确无误。例如:
答案 1 :(得分:1)
该方法是为JFrame
而非JButton
定义的。您在扩展JButton
答案 2 :(得分:0)
JFrame.Exit_on_close必须在JFrame中使用,并且您从JButton扩展。
设置JButton以关闭JFrame,就像这样。
round