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了。
因为你那是算强行关闭。你打开的程序越多,关闭以后感觉电脑还是有点卡等问题。那就是因为你没有异常处理。你可以在添加frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
添加这个以后就没有了。
JAVA如何给程序设置一个窗口首先,绘制一个默认的窗体,创建好工程,包,类,命名类为Window.很简单,在类中添加一个私有属性JFrame,这么写:privateJFramef=newJFrame("欢迎来到本自助银行");Window的构造方法中,只写 f.setVisible(true);以及窗体的初始位置和初始大小:f.setLocation(300,200);f.setSiz
如何在pythonIDLEShell窗口中编写程序计算圆的周长?可以按照以下步骤在PythonIDLEShell窗口中编写计算圆周长的程序:打开PythonIDLEShell窗口。在窗口中输入以下代码:pythonCopycoderadius=float(input("请输入圆的半径:"))circumference=2*3.14159*radiuspr
java中如何实现自动计时功能,就是点击一个start按钮就开始计时,以秒为单位简单代码如下:import java.awt.Button;import java.awt.FlowLayout;import java.awt.Label;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;impo
JAVA如何关闭或者打开一个指定的windows进程Processjava.lang.Runtime.exec(Stringcommand);在单独的进程中执行指定的字符串命令java.lang.ProcessProcessBuilder.start()和Runtime.exec方法创建一个本机进程,并返回Process子类的一个实例,该实例可用来控制进程并获取相关信息。Pr
java应用调用数据库超时,数据库自己sql很正常Java应用调用数据库超时是指在Java应用程序尝试从数据库中获取数据时,由于某种原因,Java应用程序无法获取数据,超过了约定的时间,从而导致程序出现超时问题。超时的原因可以是Java应用程序的查询语句所花费的时间过长,也可以是网络问题引起的网络延迟。要解决数据库超时问题,可以采取一些措施:1、优化SQL语句,将查询语句优化,减
java例如在界面上添加一个button,点击button时如何设置断点进入程序单步调式使用Eclipse等IDE编程工具,能方便的进入调试模式。以Eclipse为例:在button的事件函数里面设置断点,用调试模式(即debugas)启动程序即可。新增:把代码贴出来吧。新增:e.getActionCommand().equals("Exit")是用来确认你是否点击的Ex
java程序如何让程序重新再跑一遍,就是我写的这个游戏如何实现重新开始使用方法调用,配合循环写一段伪代码,可能会帮你理清思路:do{游戏开始运行;.....//循环中可以用方法调用来运行游戏//游戏失败,给用户提示再玩一次?接受用户的选择//如果用户选择"是",再次循环,游戏重新开始//如果用户选择”否",退出循环,游戏结束}while(真
java如何实现:一个一直在运行的监听程序,每当监听到数据,就把数据发给jsp页面方法1:可以利用ServletContext类的对象application解决,这个属于整个web应用都公用的内部对象。例如在监听器中publicclassGetConnListenerimplementsServletContextListener{//例如这个是要传的数据Stringdata="
2024-04-13 00:38:12
2024-03-31 15:14:06
2024-03-21 00:22:13
2024-02-10 22:15:59
2023-12-26 22:10:45
2023-09-19 05:56:31