所以这是窗口的构造函数
setLayout(new FlowLayout());
username = new JTextField("Username");
password = new JTextField("Password");
loginlogo = new JLabel(logo6);
login = new JButton("LOGIN");
login.setActionCommand("connect");
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//on clicking connect: the real meat of the log in page
usernamestring = username.getText();
passwordstring = password.getText();
logindataurl = ("URL/aphpscript.php?u=" + username + "&p=" + password);
try {
userdatabase = new URL(logindataurl);
in = new BufferedReader(new InputStreamReader(userdatabase.openStream()));
checkusername = in.read();
in.close();
} catch (MalformedURLException e) {
new error_messagebox("Malformed URL Exception", e.toString());
} catch (IOException e) {
new error_messagebox("Input/Output Exception reading url ", e.toString());
}
}
});
add(loginlogo, BorderLayout.NORTH);
add(username,BorderLayout.EAST);
add(password,BorderLayout.WEST);
add(login,BorderLayout.SOUTH);
以及我在主
中如何称呼它login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
login.setSize(500,350);
login.setIconImage(logo3);
login.setVisible(true);
但是在main中,如果一个语句返回true,我想进入下一个框,它在这个阶段我意识到有像JPanel和JFrame这样的东西,
如果有两种类型的容器,我真的不明白它们的用途但是我听说这是使用动作监听器转到另一个窗口的方法,如果某个功能允许它,我真的不明白面板的存在和完全框架,
有一个简单的解决方法吗?或者我是否必须对代码进行重大更改?
答案 0 :(得分:0)
JFrame是一个包含Java应用程序的Swing组件。可以将其视为计算机上显示的窗口。 JFrame可以有一个菜单栏(JMenuBar)。
JPanel是一个Swing组件,它包含其他Swing组件,如标签(JLabel),文本输入字段(JTextArea)和按钮(JButton)。
JFrame应该有一个主要的JPanel。根据您希望如何安排Swing组件,您可能需要额外的JPanel。
您的代码似乎正在整理登录信息。您通常会使用JDialog来执行登录。
流程是这样的。
通过调用SwingUtilities.invokeLater(Runnable)启动Swing GUI
定义您的JFrame,JPanel和所有Swing组件。
显示JFrame
显示登录JDialog
如果凭据有效,则允许访问GUI。
Oracle Swing Tutorial将帮助您理解Swing。