我正在使用JOptionPane OK_CANCEL_OPTION提交数据,并且(现在)将其打印出来。但是,我希望GUI保持打开状态并允许多次提交。但是,现在GUI在" OK"之后关闭了。单击选项,我必须重新运行该程序以提交不同的数据。有没有办法让GUI保持打开以进行多次提交?
import java.awt.GridLayout;
import javax.swing.*;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
class Display {
public static void main(String[] args) {
JTextField symbol = new JTextField();
JTextField contractEx = new JTextField();
JTextField lots = new JTextField();
JTextField price = new JTextField();
String[] items = {"Buy", "Sell"};
JComboBox<String> combo = new JComboBox<String>(items);
JTextField trader = new JTextField();
JPanel panel = new JPanel(new GridLayout(0, 1));
panel.add(new JLabel("Symbol (e.g. HH):"));
panel.add(symbol);
panel.add(new JLabel("Contract Expiry (e.g. JUL 16):"));
panel.add(contractEx);
panel.add(new JLabel("Lots:"));
panel.add(lots);
panel.add(new JLabel("Price:"));
panel.add(price);
panel.add(combo);
panel.add(new JLabel("Trader"));
panel.add(trader);
int result = JOptionPane.showConfirmDialog(null, panel, "Trade Capture System",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
if(symbol.getText().equals("") || contractEx.getText().equals("") || lots.getText().equals("") || price.getText().equals("") || trader.getText().equals("")){
JOptionPane.showMessageDialog(panel, "Please enter data into all fields.");
}
else{
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); //2014/08/06 16:00:22
System.out.println(symbol.getText() + " "
+ contractEx.getText() + " "
+ lots.getText() + " "
+ combo.getSelectedItem() + " "
+ price.getText() + " "
+ trader.getText());
}
} else {
System.out.println("Cancelled");
}
}
}
谢谢!!!
答案 0 :(得分:2)
有没有办法让GUI保持打开以进行多次提交?
查看Stopping Automatic Dialog Closing上Swing教程中有关解决方案的部分。
您可以决定使用此方法还是创建自己的自定义对话框更容易。
如果您使用此方法,那么您可能还需要查看Customizing Button Text
上的部分,以便您按下“OK”以外的其他内容。所以也许你有“提交”,“提交和关闭”,“取消”等按钮。
答案 1 :(得分:1)
如果第一个输入没有改变JOptionPane本身的任何内容,你可以在关闭后再次创建窗口。
if (result == JOptionPane.OK_OPTION) {
int result = JOptionPane.showConfirmDialog(null, panel, "Trade Capture System",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if(symbol.getText().equals("") || contractEx.getText().equals("") || lots.getText().equals("") || price.getText().equals("") || trader.getText().equals("")){
JOptionPane.showMessageDialog(panel, "Please enter data into all fields.");
}