Swing表单清除但数据仍保留

时间:2017-12-02 13:34:14

标签: java swing

我有一个swing表单,我输入4个值,然后根据单击的4个可用按钮中的一个生成测试文件。

我遇到的问题是如果我每次使用后都没有退出,如果我点击两次按钮,则前一次点击的数据用于生成第二个文件。

我认为清除所有内容可能会修复它,这样就可以点击2个单独的按钮,而不是第2个中的第1个运行数据,但我不确定如何修复两次单击相同的按钮。

package GUI;
import Generators.*;

import javax.swing.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test_File_Generator implements  ActionListener {
JLabel intro;
JButton standard;
JButton ts;
JButton fa;
JButton fd;

JLabel name;
JButton testcaseFile;
JButton fullFile;

JLabel prefix;
JLabel sponsor;
JLabel email;
JLabel numRec;

JFrame frame;

public static JTextField prefixText;
public static JTextField sponsorText;
public static JTextField emailText;
public static JTextField numRecText;


JButton generate;
JButton clear;

Test_File_Generator() {
    JFrame jpn = new JFrame("Test File Generator");
    jpn.setLayout(new FlowLayout());
    jpn.setSize(400, 400);
    jpn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    intro = new JLabel("               Select a PCI Data Feed Type               ");
    standard = new JButton("Standard");
    tsys = new JButton("TS");
    faps = new JButton("FA");
    fdc = new JButton("FD");

    name = new JLabel("          Select the type of Standard File to generate         ");
    testcaseFile = new JButton("TC File");
    fullFile = new JButton("Full File");

    //Create text fields and labels
    prefix = new JLabel("Enter a Prefix: ");
    prefixText = new JTextField(30);
    sponsor = new JLabel("Enter a Sponsor: ");
    sponsorText = new JTextField(30);
    email = new JLabel("Enter a Email: ");
    emailText = new JTextField(30);
    numRec = new JLabel("Enter the number of records needed: ");
    numRecText = new JTextField(30);
    generate = new JButton("Generate");
    clear = new JButton("Clear");






    //jpn.add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT));

    jpn.add(prefix);
    jpn.add(prefixText);
    jpn.add(sponsor);
    jpn.add(sponsorText);
    jpn.add(email);
    jpn.add(emailText);
    jpn.add(numRec);
    jpn.add(numRecText);
    //jpn.add(name);

   // jpn.add(testcaseFile);
    //jpn.add(fullFile);

    jpn.add(intro);
    jpn.add(standard);
    jpn.add(ts);
    jpn.add(fa);
    jpn.add(fd);

    standard.addActionListener(this);
    ts.addActionListener(this);
    fa.addActionListener(this);
    fd.addActionListener(this);

    jpn.setVisible(true);

}

public static void main(String[] args) {
    //Create the frame on the event dispatching thread
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new Test_File_Generator();
        }
    });
}

public void clearText(){
    prefixText.setText("");
    sponsorText.setText("");
    emailText.setText("");
    numRecText.setText("");
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource().equals(standard)) SwingUtilities.invokeLater(new Runnable() {


        @Override
        public void run() {
            if (prefixText.getText().equals("") || sponsorText.getText().equals("") || emailText.getText().equals("") || numRecText.getText().equals("")) {
                JOptionPane.showMessageDialog(frame, "All Fields Must Be Filled!");
            } else {
                new WFfgenerator().main();
                clearText();

            }
    }
    });

    else if(e.getSource().equals(ts)) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                if (prefixText.getText().equals("") || sponsorText.getText().equals("") || emailText.getText().equals("") || numRecText.getText().equals("")) {
                    JOptionPane.showMessageDialog(frame, "All Fields Must Be Filled!");
                } else {
                    try {
                        new TS_RecordCreator().main();
                    } catch (ParserConfigurationException e1) {
                        e1.printStackTrace();
                    }
                }
            }

        });
    } else if(e.getSource().equals(fa)) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    if (prefixText.getText().equals("") || sponsorText.getText().equals("") || emailText.getText().equals("") || numRecText.getText().equals("")) {
                        JOptionPane.showMessageDialog(frame, "All Fields Must Be Filled!");
                    } else {
                        try {
                            new FA_generator().main();
                        } catch (TransformerConfigurationException e1) {
                            e1.printStackTrace();
                        }
                    }
                }
            });
} else {
        if(e.getSource().equals(fd)) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    if (prefixText.getText().equals("") || sponsorText.getText().equals("") || emailText.getText().equals("") || numRecText.getText().equals("")) {
                        JOptionPane.showMessageDialog(frame, "All Fields Must Be Filled!");
                    } else {
                        new FDmerchant_generator().main();
                    }
                }
            });
        }
    }
}

}

1 个答案:

答案 0 :(得分:0)

我看错了这个问题,但能够解决它。我试图在基本表单级别清除文本。需要清除的地方是它所谓的方法。

我通过进入按钮按下调用的每个方法来修复此问题,并在其结尾处插入变量以清除值。

我还添加了在每次按下按钮后执行的相同代码,以便每次都以空白表单开头。

我还查看了所有人的评论,并摆脱了swingUtility Invoke以后的电话。