我是java的初学者并坚持以下问题。 目的是在按下注销按钮时显示登录窗口。
显示的第一个JFrame窗口是“Plain”,有2个字段的用户名和密码(我稍后会添加登录功能)
当我按下提交按钮时,JFrame“NEw Window”会显示“LOGOUT”按钮
我想要做的是当按下“LOGOUT”时,“NEw Window”应该关闭,“Plain”窗口应该打开。
当前问题:当按下“LOGOUT”按钮时,“NEw Window”正在打开。
请更正代码,以便获得所需的功能
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
class Test implements ActionListener{
JButton submit;
JFrame j;
JFrame jf;
public Test()
{
j = new JFrame("PLAIN");
j.setBounds(500,150,300,400);
j.setVisible(true);
j.setDefaultCloseOperation(j.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
j.add(panel);
panel.setSize(50, 50);
panel.setLayout(null);
JLabel label = new JLabel("User Name");
label.setSize(10,10);
label.setBounds(100, 30, 400, 30);
panel.add(label);
JTextField username = new JTextField(10);
username.setSize(10,10);
username.setBounds(300, 30, 400, 30);
panel.add(username);
JLabel password= new JLabel("Password");
password.setBounds(100, 90, 400, 30);
panel.add(password);
JPasswordField pass = new JPasswordField(10);
pass.setBounds(300, 90, 400, 30);
panel.add(pass);
submit = new JButton("Submit");
submit.setSize(10, 10);
submit.setBounds(300, 160, 200, 40);
panel.add(submit);
submit.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
j.setVisible(false);
jf = new JFrame("NEw Window");
jf.setVisible(true);
jf.setBounds(500,150,300,400);
JPanel panel2 = new JPanel();
panel2.setLayout(null);
jf.add(panel2);
JButton logout = new JButton("LOGOUT");
logout.setBounds(100, 30, 400, 30);
panel2.add(logout);
logout.addActionListener(this);
jf.setDefaultCloseOperation(j.EXIT_ON_CLOSE);
}
public void actionPerformed1(ActionEvent e1) {
jf.dispose();
j.setVisible(true);
}
public static void main(String args[])
{
new Test();
}
}
答案 0 :(得分:1)
在添加所有组件后,最后调用JFrame#setVisible()
。
根本不要使用null
布局,而是使用正确的布局管理器。
阅读更多A Visual Guide to Layout Managers,其中详细描述了所有布局管理器以及示例代码。
使用SwingUtilities.invokeLater()
确保EDT已正确初始化。
了解更多
答案 1 :(得分:0)
在添加完所有组件之后,最后将Test()中的j.setVisible(true)放入。
如果你想制作一个新的表格,不要在已有的表格中进行,因为它不对。 阅读名为Clean code的书。您的代码中也有一些错误并且没用。