编写Java应用程序,实现使用空布局完成登陆界面设计。当用户点击界面中的“登录”按钮时,获取用户输入的用户名和密码并进行校验,如果账号密码正确,弹出另外一个窗口。如果账号密码错误弹出对话框。单击重置按钮实现账号密码清空。
时间: 2024-03-15 10:47:25 浏览: 22
好的,我可以为您提供Java代码来实现您描述的登陆界面设计。以下是代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField tfUsername;
private JPasswordField pfPassword;
private JButton btnLogin;
private JButton btnReset;
public LoginFrame() {
super("Login");
JPanel panel = new JPanel();
panel.setLayout(null);
JLabel lbUsername = new JLabel("Username:");
lbUsername.setBounds(10, 10, 80, 25);
panel.add(lbUsername);
tfUsername = new JTextField(20);
tfUsername.setBounds(100, 10, 160, 25);
panel.add(tfUsername);
JLabel lbPassword = new JLabel("Password:");
lbPassword.setBounds(10, 40, 80, 25);
panel.add(lbPassword);
pfPassword = new JPasswordField(20);
pfPassword.setBounds(100, 40, 160, 25);
panel.add(pfPassword);
btnLogin = new JButton("Login");
btnLogin.setBounds(10, 80, 80, 25);
btnLogin.addActionListener(this);
panel.add(btnLogin);
btnReset = new JButton("Reset");
btnReset.setBounds(180, 80, 80, 25);
btnReset.addActionListener(this);
panel.add(btnReset);
getContentPane().add(panel);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnLogin) {
String username = tfUsername.getText();
String password = new String(pfPassword.getPassword());
if (isValidUser(username, password)) {
JOptionPane.showMessageDialog(null, "Login successful!");
new MainFrame().setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(null, "Invalid username or password.");
}
} else if (e.getSource() == btnReset) {
tfUsername.setText("");
pfPassword.setText("");
}
}
private boolean isValidUser(String username, String password) {
// TODO: 根据需求实现账号密码的校验
return true;
}
public static void main(String[] args) {
LoginFrame frame = new LoginFrame();
frame.setVisible(true);
}
}
class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
public MainFrame() {
super("Main");
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel lbTitle = new JLabel("Welcome to the main page!");
lbTitle.setHorizontalAlignment(JLabel.CENTER);
panel.add(lbTitle, BorderLayout.CENTER);
getContentPane().add(panel);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
```
在上面的代码中,我们创建了一个名为`LoginFrame`的类作为登录界面的主窗口。在该窗口中,我们使用了空布局来手动设置用户名、密码输入框和两个按钮的位置和大小。`btnLogin`和`btnReset`按钮都添加了一个`ActionListener`监听器,当用户单击它们时,将调用`actionPerformed()`方法来响应单击事件。
在`actionPerformed()`方法中,我们首先检查哪个按钮被单击。如果是登录按钮,则获取用户输入的用户名和密码,并使用`isValidUser()`方法进行校验。如果校验通过,则弹出成功消息并打开另一个名为`MainFrame`的窗口。如果校验不通过,则弹出一个对话框显示错误消息。如果是重置按钮,则清空用户名和密码输入框。
`MainFrame`类是一个简单的窗口,只是显示了欢迎消息。可以根据自己的需求进行更改。
请注意,上面的代码中的`isValidUser()`方法是一个占位符方法,您需要根据自己的需求实现账号密码的校验逻辑。
希望这个示例能对您有所帮助!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)