ActionListener两个JPanel之间的匿名类

时间:2013-07-18 02:23:48

标签: java swing button jpanel actionlistener

我正试图让小组互相合作。

当我在主GUI上时,我有第一个带有按钮添加客户端的JPanel, 点击后,它会带我到带有Form的JPanel,然后我恢复这些值, 并在主GUI中的第一个JPanel中将它们发送到JTable中。

然后我尝试插入第二条记录。我得到一个空白的GUI。我不太确定我做错了什么。如何实现多次重复相同的动作?这是加载表单,输入信息,将其推送到表格上,然后根据需要重复该过程。

这是MAIN GUI中的Add Client按钮声明

Button btn_AddClient = new Button("Add Client");
        btn_AddClient.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel.setVisible(false);
                contentPane.setVisible(false);
                setContentPane(contentPaneClient);
            }
        });
        btn_AddClient.setBounds(259, 12, 70, 22);
        contentPane.add(btn_AddClient); 

这是第二个面板中表单的添加按钮

JButton btnAdd = new JButton("Add");
        btnAdd.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {


                setContentPane(contentPaneClient);
                panel.setVisible(true);
                contentPane.setVisible(true);
                contentPaneClient.setVisible(false);
                LigneJTab l = new LigneJTab(textFieldPrenomClient.getText(),textFieldNomClient.getText(), textFieldAdresseClient.getText(), chckbxHomme.isSelected(), Sport.FOOTBALL);
                myModel.addLine(l);
                setContentPane(contentPane);
            }
        });
        btnAdd.setBounds(263, 40, 117, 29);
        contentPaneClient.add(btnAdd);

2 个答案:

答案 0 :(得分:0)

JButton btnAdd = new JButton("Add");
    btnAdd.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

            //setContentPane(contentPaneClient);
            //panel.setVisible(true);
            //contentPane.setVisible(true);
            //contentPaneClient.setVisible(false);

            LigneJTab l = new LigneJTab(textFieldPrenomClient.getText(),textFieldNomClient.getText(), textFieldAdresseClient.getText(), chckbxHomme.isSelected(), Sport.FOOTBALL);
            myModel.addLine(l);

            panel.setVisible(true);
            contentPane.setVisible(true);
            setContentPane(contentPane);

        }
    });
    btnAdd.setBounds(263, 40, 117, 29);
    contentPaneClient.add(btnAdd);

评论了顶部并添加了setContentPane(contentPane);并且有效!

谢谢!

答案 1 :(得分:0)

另一个想法:您不需要换出内容窗格来询问数据。更优雅的方法是使用模态对话框。要制作一个,首先要创建一个对话框类:

public class MyDialog extends JDialog {
    public MyDialog(Frame parent) {
        super(parent);
        setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
        // add components to getContentPane()
        // to close dialog, use setVisible(false) in listeners
    }

    public OutputData getData() {
        OutputData data = new OutputData();
        show();
        // show only returns after a setVisible(false)
        data.field = textField.getText();
        // for example, repeat as many times as necessary
        return data;
    }
}

要从JFrame调用此对话框,请使用以下代码:

MyDialog dialog = new MyDialog(this);
OutputData data = dialog.getData()
// now retrieve fields from data