我想用Java为一个库系统做一个简单的登录。如何获得框架中的文本字段?
我需要一个简单的登录页面,学生可以在其中输入他的/她的凭据。但我无法使文本字段显示在用户名和密码之外,以显示在用户名下面。 这是我到目前为止写的代码我想用Java为一个库系统做一个简单的登录。如何获得框架中的文本字段?,java,swing,Java,Swing,我需要一个简单的登录页面,学生可以在其中输入他的/她的凭据。但我无法使文本字段显示在用户名和密码之外,以显示在用户名下面。 这是我到目前为止写的代码 package library; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class L
package library;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Loginpage {
private JPanel panel;
private JLabel label;
private JFrame frame;
private JTextField field;
/*Constructor*/public Loginpage(){
gui();
}
public void gui() {
frame = new JFrame("WELCOME ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500, 500, 500, 500);/*X axis,Y axis,Width,Height*/
frame.setVisible(true);
panel = new JPanel();
label = new JLabel("Username");
field = new JTextField(20);
panel.add(label);
frame.add(panel);
frame.add(label,BorderLayout.WEST);
frame.add(field);
}
public static void main(String[]args){
new Loginpage();
}
``}
首先,setVisible(true)应该始终放在末尾,除非您希望显示输出,然后对其进行修改,这不是通常的情况 如果您的意思是想要此输出:
用户名:uuuuuuuuuuuuuuuuup>你的问题是你在做
frame.setVisible(true)代码>太早了
试试这个:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Loginpage {
private JPanel panel;
private JLabel label;
private JFrame frame;
private JTextField field;
/* Constructor */public Loginpage() {
gui();
}
public void gui() {
frame = new JFrame("WELCOME ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500, 500, 500, 500);/* X axis,Y axis,Width,Height */
panel = new JPanel();
label = new JLabel("Username");
field = new JTextField(20);
panel.add(label);
frame.add(panel);
frame.add(label, BorderLayout.WEST);
frame.add(field);
frame.setVisible(true);
}
public static void main(String[] args) {
new Loginpage();
}
}
还有其他一些事情:
- 您可能需要将
Layout
添加到面板中,例如panel.setLayout(newflowlayout())代码>
- 而不是通过
frame.add(field)将field
添加到frame
,您应该通过panel.add(字段)将其添加到面板
代码>
- 这是
frame.add(标签,BorderLayout.WEST)你真的想要什么?您可以这样做panel.add(label,BorderLayout.WEST)代码>。但这将在文本字段的右侧显示标签
这些更新后,代码变为:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Loginpage {
private JPanel panel;
private JLabel label;
private JFrame frame;
private JTextField field;
/* Constructor */public Loginpage() {
gui();
}
public void gui() {
frame = new JFrame("WELCOME ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500, 500, 500, 500);/* X axis,Y axis,Width,Height */
panel = new JPanel();
panel.setLayout(new FlowLayout());
label = new JLabel("Username");
field = new JTextField(20);
panel.add(label);
panel.add(field);
frame.add(panel);
frame.setVisible(true);
}
public static void main(String[] args) {
new Loginpage();
}
}
顺便说一句,您将标签添加到两个不同的容器中。这可能会导致意想不到的问题。