0

私のSwingアプリケーションには、「顧客の追加」ボタンのあるメインフレームがあります。「顧客の追加」ボタンをクリックすると、メインフレームが消えるときに顧客フォームが表示されます。顧客フォームには JTabbedPane しかありません。AddCustomerPanel は、キャンセル ボタンのみを持つ別のクラスです。AddCustomerPanel は、Customer フォームの JTabbedPane にタブとして追加されました。キャンセルボタンをクリックすると、Customer フレームが消え、メインフレームが再び表示されます。setVisible() メソッドを使用してみました。しかし、うまくいきませんでした。これを行うのを手伝ってください。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class MainFrame extends JFrame{
    private JButton btnMain;

    MainFrame(){
        setSize(400,200);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new FlowLayout());        
        btnMain = new JButton("Add Customer");

        btnMain.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                        new Customer().setVisible(true);
                        this.setVisible(false); // Not working
                }
        });

        add(btnMain);
    }
    public static void main(String args[]){
        new MainFrame();
    }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Customer extends JFrame{
    private JTabbedPane tabMain;

    Customer(){
        setSize(500,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new FlowLayout());
        tabMain = new JTabbedPane();
        tabMain.setPreferredSize(new Dimension(490,290));
        tabMain.add("Add Customer",new AddCustomerPanel());
        add(tabMain);   
    }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class AddCustomerPanel extends JPanel{

    private JButton btnCancel;

    AddCustomerPanel(){
        setSize(400,200);
        setVisible(true);
        setLayout(new FlowLayout());
        btnCancel = new JButton("Cancel");
        btnCancel.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                        this.setVisible(false); // Not working
                        new MainFrame().setVisible(true);

                }
        });
        add(btnCancel); 
    }
}
4

1 に答える 1

1

解決策を見つけました。

SwingUtilities.getWindowAncestor(this).setVisible(false);

new MainFrame().setVisible(true); 
于 2013-02-27T14:20:04.707 に答える