我的问题是更新类Money.java中的jTextField1(更新省)。 显示的第一个GUI是AddAddress,其中包含要填写的4个字段(jTextField):省(jTextField1),区(2),区(3)。每次双击jTextField1或2或3或4时,会出现一个显示省,区或区列表的新JFrame。点击后,它返回第一个GUI,点击省/区/病房更新。
答案 0 :(得分:1)
请勿在此类情况下使用JFrame
。实际上在一个应用程序中使用多个帧是一种不好的做法。请在此处阅读:The Use of Multiple JFrames: Good or Bad Practice?。
我建议您使用JDialog
来选择省等。
这是一个简单的例子:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField;
public class JDialogDemo extends JFrame {
public JDialogDemo() {
final MyDialog dialog = new MyDialog(this);
final JTextField provinceField = new JTextField(10);
JButton button = new JButton("Show Dialog");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.pack();
dialog.setLocationRelativeTo(JDialogDemo.this);
dialog.setVisible(true);
provinceField.setText(dialog.getSelectedProvince());
}
});
setLayout(new FlowLayout());
add(provinceField);
add(button);
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new JDialogDemo();
}
}
class MyDialog extends JDialog {
private String selectedProvince;
public MyDialog(Frame owner) {
super(owner, true);
setTitle("Provinces");
final JList<String> list = new JList<String>(new String[]{"province1", "province2", "province3"});
add(list);
JButton okButton = new JButton("Ok");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedProvince = list.getSelectedValue();
setVisible(false);
}
});
add(okButton, BorderLayout.SOUTH);
}
public String getSelectedProvince() {
return selectedProvince;
}
}
修改强>
修改您的jTextField1MouseClicked
方法
private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextField1MouseClicked
// TODO add your handling code here:
if(evt.getClickCount() == 2){
AddProvince provinceDialog = new AddProvince();
provinceDialog.setVisible(true);
jTextField1.setText(provinceDialog.getSelectedProvince());
}
}
然后让AddProvince
从JDialog
延伸。并添加一个返回所选省份的方法。