gpt4 book ai didi

java - Jpanel UI main() 方法

转载 作者:行者123 更新时间:2023-12-01 21:12:06 24 4
gpt4 key购买 nike

我编写了一个程序,它是一个带有两个文本字段和两个按钮的登录窗口,现阶段的actionPerformed方法用于测试目的。

我的问题是,我将所有组件放在构造函数中,我不知道如何编写 main() 方法以使程序运行,我尝试了类似获取类的引用、设置可见性,但它们都不起作用。

 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class LoginUI extends JFrame implements ActionListener
{


JTextField Tusername;
JTextField Tpassword;
JButton Login = new JButton("Login");
JButton register = new JButton("Register");
JLabel passwordLabel = new JLabel("Password");
JLabel userLabel = new JLabel("User");

public String username;
public String password;

public LoginUI()
{

JFrame frame = new JFrame("Login or register");
JPanel Panel = new JPanel();
frame.add(Panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Login.setBounds(10, 80, 80, 25);
Panel.add(Login);
Login.addActionListener(this);

register.setBounds(180, 80, 80, 25);
Panel.add(register);
register.addActionListener(this);

Panel.setLayout(null);

JLabel userLabel = new JLabel("User");
userLabel.setBounds(10, 10, 80, 25);
Panel.add(userLabel);

Tusername = new JTextField(20);
Tusername.setBounds(100, 10, 160, 25);
Panel.add(Tusername);

JLabel passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10, 40, 80, 25);
Panel.add(passwordLabel);

Tpassword = new JPasswordField(20);
Tpassword.setBounds(100, 40, 160, 25);
Panel.add(Tpassword);

}


public void actionPerformed(ActionEvent e)
{
if (e.getSource() == Login)
{
String username = Tusername.getText();
System.out.println(username);
}
else if (e.getSource() == register)
{
String password = Tpassword.getText();
System.out.println(password);
}
}


public static void main(String args[])
{




}}

最佳答案

好吧,这里有一些问题。首先是构造函数的这一部分:

JFrame frame = new JFrame("Login or register");

LoginUI 已经是 JFrame。您不需要创建另一个。将该行替换为:

super("Login or register");

然后更改这些行:

frame.add(Panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

对此:

add(Panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

这将调用 LoginUI 实例本身的方法,而不是它创建的新 JFrame

然后,在您的 main 方法中,您需要创建一个 LoginUI,并将其设置为可见。看起来像这样:

JFrame loginUI = new LoginUI();
loginUI.setVisible(true);

该代码将显示完全填充的框架。但是,它不会为其设置正确的大小。通常,您可以使用 loginUI.pack() 自动调整其大小,但您在面板中使用 null 布局(几乎普遍认为是 very bad idea )。如果您不想更正该问题,唯一的选择是确定所需的大小,并使用这些值调用 loginUI.setSize()。不过,我强烈建议不要使用null布局。

如果您进行所有这些更改,它应该会像您期望的那样显示用户界面。

关于java - Jpanel UI main() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com