我有一个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();
}
}
});
}
}
}
}
答案 0 :(得分:0)
我看错了这个问题,但能够解决它。我试图在基本表单级别清除文本。需要清除的地方是它所谓的方法。
我通过进入按钮按下调用的每个方法来修复此问题,并在其结尾处插入变量以清除值。
我还添加了在每次按下按钮后执行的相同代码,以便每次都以空白表单开头。
我还查看了所有人的评论,并摆脱了swingUtility Invoke以后的电话。