在我的应用程序中有两个框架。在主框架中有“服务器”按钮。当我点击“服务器”按钮时,第二帧将打开,输入一些细节后,当我点击第二帧的“提交”按钮时,此帧将关闭并再次控制转到“服务器”按钮,我称这个帧为我将完成剩下的任务。 在我的应用程序中,当第二帧打开时,我想要的另一件事就是第一帧没有活动。
我的第一帧是: JFrame框架;
在此框架中,有一个服务器按钮: JButton btnSaveOnServer;
在此按钮的addActionListener中,我编写此代码以打开第二帧:
btnSaveOnServer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
ServerClass window = new ServerClass();
window.serverFrame.setVisible(true);
}
});
第二帧代码:
public class ServerClass{
public JFrame serverFrame;
private JLabel userName;
private JLabel password;
private JTextField textUsername;
private JPasswordField textPassword;
private JButton btnOk;
protected ServerClass(){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
serverFrame = new JFrame("Server Entry Token");
serverFrame.setBounds(500, 280, 335, 250);
serverFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
serverFrame.getContentPane().setLayout(null);
font = new Font("Arial", Font.BOLD, 15);
userName = new JLabel("Username");
userName.setBounds(4, 40, 100, 15);
userName.setFont(font);
password = new JLabel("PassKey");
password.setBounds(4, 69, 100, 15);
password.setFont(font);
textUsername = new JTextField();
textUsername.setBounds(110, 35, 200, 25);
textUsername.setFont(font);
textPassword = new JPasswordField(10);
textPassword.setBounds(110, 65, 200, 25);
textPassword.setEchoChar(ch);
btnOk = new JButton("Submit");
btnOk.setBounds(30, 170, 85, 25);
serverFrame.add(userName);
serverFrame.add(password);
serverFrame.add(textUsername);
serverFrame.add(textPassword);
serverFrame.add(btnOk);
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (!textUsername.getText().equals("")
&& !textPassword.getText().equals("")) {
tArea.append("Username:\t"+textUsername.getText()+"\n");
tArea.append("Pass:\t"+textPassword.getText()+"\n");
//tArea is the area in first frame where I display the entered data.
serverFrame.dispose();
}
}
});
}
}
在这里,我在“提交”按钮中添加了代码 serverFrame.dispose(); ,该按钮关闭了框架但控件未到达第一帧。 所以我的问题是:
答案 0 :(得分:3)
1)In my application two frame is there
请勿使用两个JFrames,这不可能不使用(JNI or JNA
),这些容器不会实现parent
,有困难工作移动一个JFrame
toFront()
/ toBack()
/真实FocusRecycle
是一个残忍的笑话
2)使用JDialog,setModal
或ModalityType
,
3)普通香草JOptionPane是最好的办法,
4)JFrame / JDialog / JWindow
没有实现finalize()
,如果您要求setVisible(false)
或dispose()