2024-05-19 18:53:26 | 我爱编程网
首先分析需要的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);
}
}
运行效果图
通常情况下,在cmd运行java程序后,如果关闭cmd窗口,java程序也会随之关闭。\x0d\x0a如果你编写的是命令行交互的程序,这当然没问题。如果是GUI程序,这时如果关闭cmd窗口(也许你是觉得它影响美观),很糟糕,GUI界面也随之消失了。\x0d\x0a如何才能关闭cmd而不关闭java gui界面呢?答案是:javaw 。在java安装目录下,除了有java.exe供我们运行编译好的class文件外,还有一个javaw.exe文件,这个命令就可以实现我们的目的。\x0d\x0a如果你平时是这样运行java程序的:java Test,这时只需要稍稍更改下:javaw Test即可。等GUI出来以后,关闭cmd窗口即可。\x0d\x0a另外还有一个方法,就是把你所有的class文件打包成jar文件,双击即可运行,也就不需要打开cmd了。
我爱编程网(https://www.52biancheng.com)小编还为大家带来java关闭之后,java tm platform se binary还在运行?什么情况?的相关内容。
因为你那是算强行关闭。你打开的程序越多,关闭以后感觉电脑还是有点卡等问题。那就是因为你没有异常处理。你可以在添加frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
添加这个以后就没有了。
java在窗口中添加按钮怎么显示在窗口啊用frame.add(button)添加按钮对象到窗体对象,再用frame.setVisable(true)显示窗口即可或用panel.add(button);frame.add(panel);frame.setVisable(true);javaswing编程中,如何实现点击按钮弹出新的窗口???其实是内部类的运用,我附上
JAVA如何给程序设置一个窗口首先,绘制一个默认的窗体,创建好工程,包,类,命名类为Window.很简单,在类中添加一个私有属性JFrame,这么写:privateJFramef=newJFrame("欢迎来到本自助银行");Window的构造方法中,只写 f.setVisible(true);以及窗体的初始位置和初始大小:f.setLocation(300,200);f.setSiz
php点击按钮调用一个函数给你一个最简单的示例<?phpfunctionquery(){........代码......}if($_POST["do"]=="yes"){query();}?><inputtype="button"value="按钮"onclick="javascript:cmdclick()"/><scr
JAVA编写一个带有窗口的应用程序这样:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.Graphics;publicclassMainClassextendsJFrame{publicJComboBoxbox;intflag=0;jpNew
JAVA如何通过按钮打开另一个程序packagekuohao;importjava.awt.Button;importjava.awt.Color;importjava.awt.FileDialog;importjava.awt.Frame;importjava.awt.TextArea;importjava.awt.event.ActionEvent;impor
如何在pythonIDLEShell窗口中编写程序计算圆的周长?可以按照以下步骤在PythonIDLEShell窗口中编写计算圆周长的程序:打开PythonIDLEShell窗口。在窗口中输入以下代码:pythonCopycoderadius=float(input("请输入圆的半径:"))circumference=2*3.14159*radiuspr
java中swing界面中主程序运行时进度条不显示,程序结束后才显示;注释掉主程序后,再运行,进度条正常显示你的action事件可以放在一个新线程中运行,不要阻挡Swing画图。Swing对事件的响应都是放在一个叫事件派发的线程中去做的,如果你的事件响应监听器本身在被事件派发线程调用时你做的事件太花时间了(比如我们来个无限循环啥的)我们就应该把这个actionPerformed方法中的
php。在while循环中调用一个函数。是当调用的函数执行完后再进入下一次循环?你的第一个问题:只有在本次的yihanshu()彻底执行完毕后,才进行下一次while循环。你的第二个问题:可以在yihanshu()里面插入sleep(1000000);例如yihanshu(){sleep(10000);//间隔10000秒之后再继续执行dosomething();
2025-02-01 20:24:39
2024-01-05 14:11:24
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01