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

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

首先分析需要的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);}}
运行效果图



JButton btn=new JButton(new AbstractAction("关闭并打开") { @Override public void actionPerformed(ActionEvent e) { oldFrame.dispose();// 关闭并销毁,无需销毁可采用oldFrame.setVisible(false); newFrame.setVisible(true);// 打开新窗口 }});

JButton btn=new JButton(new AbstractAction("关闭并打开") {      @Override   public void actionPerformed(ActionEvent e) {      oldFrame.dispose();// 关闭并销毁,无需销毁可采用oldFrame.setVisible(false);      newFrame.setVisible(true);// 打开新窗口   }});

假设本身是Form1,第二个窗口是Form2,你双击按钮进入那个按钮的点击事件,编写以下代码:
Form2 f2=new Form2();
f2.Show();
this.Hide();

简单的程序代码,运用代码就可以完美解决



java程序怎样在点击按钮后在当前窗体的布局中弹出一个新窗体
答:if("添加按钮监听".equals(str)) { //在这里新建窗口,或者另外建一个窗口类,在这里new那个类 } } 有问题追问吧,good luck!~

java程序中如何实现在点击关闭窗口时,跳出是否确定关闭窗口的提示框...
答:public class Test extends JFrame{ public Test(){ setBounds(200,100,200,300);setTitle("测试");addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ JOptionPane.showMessageDialog(null,...

java程序中如何实现单击页面a中的按钮跳转到页面b
答:java程序中的jsp页面点击按钮跳转到页面b的方式如下:1.jsp页面的方式如下:跳转 response.sendRedirect("b.jsp")<jsp:forward page="b.jsp"/> 2.在swing里,给button加一个监听器,然后在监听事件中打开另一个页面。在j...

java鼠标点击事件怎么做?
答:java鼠标点击事件的方法如下:事件源.addMouseListener(new MouseAdapter() {//建立事件处理机制 @Override public void mouseClicked(MouseEvent e) { if(e.getButton()==e.BUTTON1){//点击鼠标左键 int x=...

如何在java中点击button弹出一个选择框
答:/> 然后可以选择双击或者点击button 打开选择部门页面。此时要求选择的值里面包含名称和id 可以中间添加字符区分。然后获得这个值。然后再把这个切割开。把相对应的值放到标签里面去。就实现了楼主的效果。不懂继续追问我。

一个java程序-要求当点按钮时,按钮上的字符会相应改变改怎么做?_百 ...
答:如果你要用一个按扭实现JLabel里的内容改变的话,建议你再加入一个变量,用来记得单击按扭的次数,再根据这个单击的次数决定应该执行j.setText("Cancel"); 还是 j.setText("That's all!"); 举个例子:在程序声明一个...

在java中如何才能点击菜单项就能运行程序
答:import java.awt.*;class MyDialog extends JDialog{//制作对话框 public MyDialog(JFrame parent){ super(parent,"My dialog",true);Container cp=getContentPane();cp.setLayout(new FlowLayout());cp.add(new JLabel...

java中控制鼠标点击的方法
答://程序流程:模拟鼠标左键点击 开始-->运行-->CMD-->DIR-->CLS-->EXIT //模拟右键点击 移动到右下角-->右键点击-->调整日期和时间-->退出 import java.awt.*;import java.awt.event.*;import javax.swing....

java界面程序 点击一个按钮,在文本框中出现你好
答:参考代码 import java.awt.*;import java.awt.event.*;import javax.swing.*;//jdk1.8测试通过//该类继承于JFrame类 实现了ActionListener接口public class HelloFrame extends JFrame implements ActionListener{JLabel jl...

java图形界面程序,当单击按钮时把一个文本框当前内容复制到另一个文本...
答:import javax.swing.JTextArea;public class Main extends JFrame { private JTextArea text1 = null;private JTextArea text2 = null;private JButton copyButton = null;public Main() { super("测试");init();JPanel ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网