JDialog 和 JFrame 以及新实例
JDialog and JFrame and new instance
我有 2 个 classes - 一个带有按钮的 JFrame 和一个带有几个文本字段的 JDialog(弹出窗口)。现在,当我单击 JFrame 中的按钮时,会出现一个 JDialog:
/*** someClass class ****/
JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jd = new jDialog();
jd.setModal(true);
jd.setVisible(true);
}
});
public void doStuff(String one....String five){
... ..
}
现在弹出一个 jDialog,我需要在其中填写一些文本字段,然后单击另一个按钮进行确认。
/*** jDialog class ***/
JButton btnConfirm = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
one = 1_tf.getText();
two = 2_tf.getText();
three = 3_tf.getText();
four = 4_tf.getText();
five = 5_tf.getText();
doAnything(one,two,three,four,five);
1_tf.setText("");
2_tf.setText("");
3_tf.setText("");
4_tf.setText("");
5_tf.setText("");
}
});
public void doAnything(String one,String two,String three,String four,String five){
someClass sc = new someClass();
sc.doStuff(one,two,three,four,five);
}
文本字段的值将传递给 doAnything() 方法,在 doAnything() 内部是 someClass class 的一个实例以访问 sc.doStuff() 方法并传递值。
现在的问题是,每当我在 jDialog class 上单击确认时,就会出现一个新的 JFrame,所以有 2 个 JFrame,这不是我想要的。就像每当我在 jdialog 上做某事时,它都会创建一个新的 JFrame 而不是重叠原来的 JFrame。
在 doAnything() 中不要重新创建 someClass(最好阅读 java 命名约定 -classes 应该从大写字母开始)实例。
为 someClass 实例定义 class 字段?只创建一次(如果它为空)并重复使用它。
这可能是因为在 someClass
构造函数中您创建了一个显示 JFrame。要避免此问题,请对 doStuff()
方法进行 static
引用。
声明为:
public static doStuff(one, two, three, four, five) {
...
}
并将其用作:
someClass.doStuff(one, two, three, four, five);
现在使用方法时,不用再创建someClass
class的对象,也就不用调用构造方法了
我有 2 个 classes - 一个带有按钮的 JFrame 和一个带有几个文本字段的 JDialog(弹出窗口)。现在,当我单击 JFrame 中的按钮时,会出现一个 JDialog:
/*** someClass class ****/
JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jd = new jDialog();
jd.setModal(true);
jd.setVisible(true);
}
});
public void doStuff(String one....String five){
... ..
}
现在弹出一个 jDialog,我需要在其中填写一些文本字段,然后单击另一个按钮进行确认。
/*** jDialog class ***/
JButton btnConfirm = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
one = 1_tf.getText();
two = 2_tf.getText();
three = 3_tf.getText();
four = 4_tf.getText();
five = 5_tf.getText();
doAnything(one,two,three,four,five);
1_tf.setText("");
2_tf.setText("");
3_tf.setText("");
4_tf.setText("");
5_tf.setText("");
}
});
public void doAnything(String one,String two,String three,String four,String five){
someClass sc = new someClass();
sc.doStuff(one,two,three,four,five);
}
文本字段的值将传递给 doAnything() 方法,在 doAnything() 内部是 someClass class 的一个实例以访问 sc.doStuff() 方法并传递值。
现在的问题是,每当我在 jDialog class 上单击确认时,就会出现一个新的 JFrame,所以有 2 个 JFrame,这不是我想要的。就像每当我在 jdialog 上做某事时,它都会创建一个新的 JFrame 而不是重叠原来的 JFrame。
在 doAnything() 中不要重新创建 someClass(最好阅读 java 命名约定 -classes 应该从大写字母开始)实例。
为 someClass 实例定义 class 字段?只创建一次(如果它为空)并重复使用它。
这可能是因为在 someClass
构造函数中您创建了一个显示 JFrame。要避免此问题,请对 doStuff()
方法进行 static
引用。
声明为:
public static doStuff(one, two, three, four, five) {
...
}
并将其用作:
someClass.doStuff(one, two, three, four, five);
现在使用方法时,不用再创建someClass
class的对象,也就不用调用构造方法了