gpt4 book ai didi

java - 单击按钮关闭窗口

转载 作者:行者123 更新时间:2023-11-29 03:42:05 25 4
gpt4 key购买 nike

你好,

我正在使用 Java Swing,我想在单击按钮时关闭窗口。我不知道使用 actionlistener 是执行此操作的最佳方法,但目前我遇到了编译错误,因此它一定是不正确的。

这是我的代码:

    public class assignment2
{

public static void main(String[] args){
MyFrame f = new MyFrame(); //open the inital gui interface
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); //set it visibile
}
}

//this is the initial gui screen, presenting user with options for which action they would like to take
//al actions for the gui are commenced here
class MyFrame extends JFrame{

public MyFrame(){

buttonPanel1 p = new buttonPanel1(); // add the buttons for this frame
add(p);

setSize(800,600);
setTitle("Travel Console");
setLocationRelativeTo(null);
}
}

class buttonPanel1 extends JPanel{
public buttonPanel1(){
//create buttons
JButton addItem = new JButton("Add an Item");
JButton deleteItem = new JButton("Delete an item");
JButton listItem = new JButton("List items");
JButton editItem = new JButton("Edit an item");
JButton bookFlight = new JButton("Book a flight");
JButton save = new JButton("Save data");
JButton load = new JButton("Load data");
JButton exit = new JButton("Exit");

//set layout manager for button panel
setLayout(new GridLayout(8,1,1,5));

//create buttons
add(addItem);
add(deleteItem);
add(listItem);
add(editItem);
add(bookFlight);
add(load);
add(save);
add(exit);

addItemListener addList = new addItemListener();
addItem.addActionListener(addList);
exitListener exitList = new exitListener();
exit.addActionListener(exitList);
}

}

//listener classes for the inital gui page. each button has its own actionlistener which launches the selected option
class addItemListener implements ActionListener{
public void actionPerformed(ActionEvent event){ //launch add item
addItemFrame addItem = new addItemFrame();
addItem.setDefaultCloseOperation(addItemFrame.DISPOSE_ON_CLOSE);
addItem.setVisible(true);
}

}
class addItemFrame extends JFrame{
public addItemFrame(){
addItemButtonPanel b = new addItemButtonPanel(); // add the buttons for this frame
add(b);

setSize(800,500);
setTitle("Add an Item");
setLocationRelativeTo(null);
}
}
//part of addItemFrame class
class addItemButtonPanel extends JPanel{
public addItemButtonPanel(){
JLabel selectItem = new JLabel("Select which item you would like to add:");
JButton newCustomer = new JButton("Customer");
JButton newflight = new JButton("Flight");
JButton newMovie = new JButton("Movie");
JButton goBack = new JButton("Return to main menu");

setLayout(new GridLayout(5,1,1,5));

add(selectItem);
add(newCustomer);
add(newflight);
add(newMovie);
add(goBack);

goBackListener gbList = new goBackListener();
goBack.addActionListener(gbList);
}
}

//listener classes for the addItemFrame
class goBackListener implements ActionListener{
public void actionPerformed(ActionEvent event){
addItemFrame.dispose();
}

}

我遇到的问题是列出的最后一个类 goBackListener,它实际上只是关闭当前窗口,以便再次显示主菜单屏幕。我需要对在 addItemListener 类中创建的 addItemFrame 的静态引用。但是改成static是无效的修饰符?

我该如何解决?

最佳答案

试试这个

//listener classes for the addItemFrame 
class goBackListener implements ActionListener{
private addItemFrame frame;
public goBackListener(addItemFrame frame){
this.frame= frame;
}
public void actionPerformed(ActionEvent event){
frame.dispose();
}
}

并将 addItemFrame 的实例发送给它的构造函数

关于java - 单击按钮关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com