我正在创建一个Java应用程序,我将要有一个按钮。按下该按钮后,我想要一个表单,其中包含username
,password
等字段以及其他各种字段。在该表单中有Save
按钮,按下时将所有内容保存到文件并切换回第一个JFrame。
这就是我目前的做法。这是第一个JFrame的按钮代码:
public class FirstJFrame extends JFrame {
private void newJFrameActionPerformed(java.awt.event.ActionEvent evt) {
SecondJFrame pan = new SecondJFrame();
this.setVisible(false);
pan.setVisible(true);
}
}
这是第二个JFrame上Save
按钮的代码:
public class SecondJFrame extends javax.swing.JFrame {
private void goBackActionPerformed(java.awt.event.ActionEvent evt) {
SecondJFrame pan = new SecondJFrame();
this.setVisible(false);
pan.setVisible(true);
}
}
这对我来说效果不错,但我觉得我根本就没有做到这一点,因为我每次创建一个新对象,我可能会创建一个内存泄漏。我正在做的是正确的还是有更好的方法?
答案 0 :(得分:2)
确实不是最好的方式!
如果要从用户输入中收集一些数据,可以在输入对话框中使用JOptionPane。这是一个代码示例,可以向您展示:
import javax.swing.*;
import java.awt.event.*;
public class ShowInputDialog{
public static void main(String[] args){
JFrame frame = new JFrame("Input Dialog Box Frame");
JButton button = new JButton("Show Input Dialog Box");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
JTextField xField = new JTextField(5);
JTextField yField = new JTextField(5);
JPanel myPanel = new JPanel();
myPanel.add(new JLabel("x:"));
myPanel.add(xField);
myPanel.add(Box.createHorizontalStrut(15)); // a spacer
myPanel.add(new JLabel("y:"));
myPanel.add(yField);
int result = JOptionPane.showConfirmDialog(null, myPanel,
"Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
System.out.println("x value: " + xField.getText());
System.out.println("y value: " + yField.getText());
}
}
});
JPanel panel = new JPanel();
panel.add(button);
frame.add(panel);
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}