java按钮关闭当前窗口_如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口。...

本文详细介绍了如何使用Java Swing组件创建一个登录窗口,并在验证用户身份后跳转到主窗口。登录窗口包含账号和密码输入框,以及登录和重置按钮。登录成功后,登录窗口隐藏,主窗口显示。主窗口展示欢迎信息,并提供退出功能。代码中包含了窗口布局、事件监听和资源管理等关键点。
摘要由CSDN通过智能技术生成

展开全部

首先分析需要32313133353236313431303231363533e4b893e5b19e31333363376530的GUI技术

java中一般使用swing 和awt技术来实现图形界面,Swing组件较多,功能比较强大,所以这里使用Swing组件来实现。窗口使用(JFrame),按钮使用(JButton)。

设想一个符合题目需求的场景

两个窗口关联并且跳转,最常见的场景就是登陆了。

登陆窗口,输入用户名和密码,如果成功就跳转到主窗口

核心逻辑,跳转窗口的关键代码

一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。

但是隐藏窗口,会在后面浪费系统资源。

如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源

代码和注释

LoginFrame 类import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

//LoginFrame 登陆窗口  功能 实现用户登陆 ,如果成功就跳转

//LoginFrame 继承于窗口类, 并实现ActionListener接口

public class LoginFrame extends JFrame implements ActionListener {

// 申明需要的组件

JButton jb1, jb2;//按钮

JTextField jtf1;//文本框

JPasswordField jpf1;//密码框

public LoginFrame() {

// 窗口属性的设置

setTitle("登陆窗");// 窗口标题

setSize(300, 180);// 窗口大小

setLocationRelativeTo(null);// 窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机

setLayout(new FlowLayout());// 设置布局流式布局

JPanel jp = new JPanel(new GridLayout(4, 1));// 设置面板为表格布局4行1列

// 第一行

JPanel jp1 = new JPanel();

JLabel jl1 = new JLabel("账号 ");

jtf1 = new JTextField(12);

jp1.add(jl1);

jp1.add(jtf1);

jp.add(jp1);

// 第二行

JPanel jp2 = new JPanel();

JLabel jl2 = new JLabel("密码 ");

jpf1 = new JPasswordField(12);

jp2.add(jl2);

jp2.add(jpf1);

jp.add(jp2);

// 第三行

JPanel jp3 = new JPanel();

jb1 = new JButton("登陆");

jb1.addActionListener(this);// 添加动作响应器

jb2 = new JButton("重置");

jb2.addActionListener(this);// 添加动作响应器

jp3.add(jb1);

jp3.add(jb2);

jp.add(jp3);

// 第四行

JPanel jp4 = new JPanel();

JLabel jl3 = new JLabel("提示: 账号 admin 密码 123");

jl3.setForeground(Color.DARK_GRAY);

jp4.add(jl3);

jp.add(jp4);

add(jp);

}

// 动作响应

public void actionPerformed(ActionEvent e) {

String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理

if (cmd.equals("登陆")) {

String id = jtf1.getText();// 取得用户名

String key = new String(jpf1.getPassword());// 取得密码

if (id.equals("admin") && key.equals("123")) {// 判断是否登录成功

// 如果登录成功

setVisible(false);// 本窗口隐藏,

new MainFrame(id).setVisible(true);// 新窗口显示

dispose();//本窗口销毁,释放内存资源

} else {

//如果登录失败  弹出提示

JOptionPane.showMessageDialog(this, "用户名或者密码错误.", "通知", JOptionPane.ERROR_MESSAGE);

clearText();//清空文本框 密码框的输入

}

} else if (cmd.equals("重置")) {

clearText();

}

}

private void clearText() {//清空文本框, 密码框的输入

jtf1.setText("");

jpf1.setText("");

}

//main方法, 程序的入口

public static void main(String[] args) {

new LoginFrame().setVisible(true);//创建登录窗口,并可见

}

}

MainFrame类import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MainFrame extends JFrame {

public MainFrame(String name) {

setTitle("主窗口");//标题

setSize(300, 260);//大小

setLocationRelativeTo(null);//居中

setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel jp = new JPanel();

JLabel jl1 = new JLabel("欢迎");

JLabel jl2 = new JLabel(name);

jl2.setForeground(Color.BLUE);//设置文本颜色

JLabel jl3 = new JLabel("使用系统.");

jp.add(jl1);

jp.add(jl2);

jp.add(jl3);

add(jp, BorderLayout.NORTH);

JTextArea jta = new JTextArea();

jta.setLineWrap(true);

jta.append("消息提示");

jta.append(" 消息!通知~!");

JScrollPane jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

add(jsp);

JPanel jp2 = new JPanel();

JButton jb = new JButton("退出");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0);//退出

}

});

jp2.add(jb);

add(jp2,BorderLayout.SOUTH);

}

}

运行效果图

9204290d76cee784f9605d1dcc0bdf82.png

66887dbb58651dd0e747d224cdfa725c.png

a6b7db7cfb644093400e503bd6335935.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值