当我去第二个窗口时,如何使第一个窗口关闭?

时间:2014-10-23 13:08:00

标签: java swing jframe

当我选择create选项时,它仍会显示选项。

public Assign(){

    setLayout(new BorderLayout());
    JPanel jpnButton = new JPanel();


    jpnButton.add(jbtCreate); //the selection for user to choose
    jpnButton.add(jbtRetrieve);
    jpnButton.add(jbtUpdate);
    jpnButton.add(jbtDelete);

    add(jpnButton, BorderLayout.CENTER);

    jbtCreate.addActionListener(new ActionHandle());
    jbtRetrieve.addActionListener(new ActionHandle());
    jbtUpdate.addActionListener(new ActionHandle());
    jbtDelete.addActionListener(new ActionHandle());

    setTitle("Manage Supplier");
    setSize(500,100);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public class ActionHandle implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == jbtCreate){  //if the user choose to create a new supplier then it will come out the previous selection together- Create,retrieve,update and delete

    add(ptn1, BorderLayout.CENTER);
    add(ptn2, BorderLayout.SOUTH);

    ptn1.setBorder(new TitledBorder(null, "New Supplier Details")); 
    ptn1.add(new JLabel("Company Name"));
    ptn1.add(jtxt1);
    ptn1.add(new JLabel("Address"));
    ptn1.add(jtxt2);
    ptn1.add(new JLabel("Town"));
    ptn1.add(jtxt3);
    ptn1.add(new JLabel("Postcode"));
    ptn1.add(jtxt4);
    ptn1.add(new JLabel("Country"));
    ptn1.add(jtxt5);
    ptn1.add(new JLabel("Contact Information"));
    ptn1.add(new JLabel("Contact Name"));
    ptn1.add(jtxt6);
    ptn1.add(new JLabel("Email"));
    ptn1.add(jtxt7);
    ptn1.add(new JLabel("Product Supply"));
    ptn1.add(jtxt8);


    ptn2.add(jbtOK);
    ptn2.add(jbtCancel);

    setSize(1000,500);
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

1 个答案:

答案 0 :(得分:1)

首先为第一帧设置

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

如果你想先关闭并打开第二个使用atach,这个监听器在第一个JFrame中按钮

@Override
public void actionPerformed(ActionEvent e)
{
        setVisible(false);
        dispose(); 
        new SecondJFrame();
}

致@Andrew Thompson:

System.exit();导致Java VM完全终止。

JFrame.dispose();导致JFrame窗口被操作系统销毁和清理。根据{{​​3}},如果没有其他Windows可用,这可能导致Java VM终止,但这应该被视为副作用而不是常态。

您选择的那个真的取决于您的情况。如果要终止当前Java VM中的所有内容,则应使用System.exit()并清除所有内容。如果您只想破坏当前窗口,如果这是唯一的窗口,则会产生关闭Java VM的副作用,然后使用JFrame.dispose()