我有一个课程作业,我用Java制作了一个简单的Java会计程序。这是我第一次使用Java中的GUI,我不是一个好的程序员。
当程序运行时,用户可以选择五个JButton,点击它们时会将它们带到一个带有一些输入对话框的新JFrame,这些对话框保存为字符串和双打。 我的变量设置为
variable = JOptionPane.showInputDialog(" TEXTGOESHERE");
我的问题是,在对话框中输入值后,它们会再次弹出,就像在循环中一样。用户必须在每个对话框中输入两次输入。
其中一个按钮的代码:
pcButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFrame pcframe = new JFrame("Choosing a File Menu");
pcframe.setSize(760,500);
pcframe.add( new JPanel()
{
public void paintComponent( Graphics g )
{
super.paintComponent(g);
//ACTION BEGIN-----------------------------------------
显示两次的输入对话框:
compName = JOptionPane.showInputDialog("What is the name of your business?");
firstName = JOptionPane.showInputDialog("What is your first name?");
lastName = JOptionPane.showInputDialog("What is your last name?");
day = JOptionPane.showInputDialog("What is the day?");
month = JOptionPane.showInputDialog("What is the month?");
year = JOptionPane.showInputDialog("What is the year?");
String filename = JOptionPane.showInputDialog("Would you like file 1, 2, or 3? (Type in 1, 2, or 3");
filename = (filename + ".txt");
//Storing File into array
//Calculations
g.drawString("" + compName, 330, 15);
//More drawStrings
//ACTION END-------------------------------------------
}
});
pcframe.setVisible( true );
}
});
modePanel.add(pcButton);
当按下pcButton时,用户应该输入他们的名字,文件等。但是,每个对话框输入都会显示两次。我希望输入只显示一次。
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
抱歉,但那都错了。您应该 从不 调用JOptionPanes,或者在paintComponent方法中执行除绘制之外的任何操作。您永远无法完全控制何时或甚至调用该方法,并且您的程序的感知响应能力部分取决于该方法完成其工作的速度。所以我的主要建议是 - 从该方法中获取所有非绘画代码,并使用您可以完全控制的方法。
我自己,而不是向用户抛出一堆JOptionPanes,我创建了一个JPanel,其中包含我希望用户填写的所有字段,然后显示一个保存此JPanel的单个JOptionPane,以及一次性获取所有输入。
接下来,你的辅助对话窗口应该是一个真正的对话框,对于Swing来说,这意味着一个JDialog(或JOptionPane,它是一种模态JDialog),而不是一个JFrame。