目录
系统实现——Java Swing界面
其实我也是第一次接触Java Swing,在这里不得不感谢一下我的一个东北大学的同学。如果不是因为疫情大家都在家上网课,他又恰好用过Java Swing来进行前端的开发,我也就不能够在短时间内掌握Java Swing的前端开发方法。非常感谢他对我的耐心指导。我之前有用过C#来进行前端界面开发,这对我理解Java Swing的原理有着极大的帮助。
Java Swing控件介绍
textField
JTextField 是一个轻量级组件,它允许编辑单行文本。 JTextField 应与 java.awt.TextField 具有源代码兼容性,理应如此。此组件具有 java.awt.TextField 类中没有的功能。所有已实现的接口:ImageObserver, MenuContainer, Serializable, Accessible, Scrollable, SwingConstants。
在具体的代码实现中,textField一般用于获取外设的输入,可以自行设置所需的textField的大小和位置,实现的代码如下:
实现效果:
JLabel
JLabel 表示标签,即用于不可编辑的文本的显示区域。
JLabel 可以显示文本和图像。它甚至可以渲染HTML标签,以便您可以创建一个显示多色或多行文本的 JLabel 。
JLabel 可以显示文本和图像。它甚至可以渲染HTML标签,以便您可以创建一个显示多色或多行文本的 JLabel 。
在具体的使用中,一般用于显示静态的文字,代码部分如下图所示:
具体的显示效果如下:
但实际上,JLabel还经常用于显示图片和动态内容,具体的实现方法如下。
使用JLabel设置窗体背景图片
设置背景图片的方法是我在网上查阅资料之后学习到的,在本项目中我也多次使用到了这个方法来设置某个窗体的背景,比如登录界面、游乐项目展示界面等等。
实现的具体代码如下,以Login.java中的背景为例:
try {
login window = new login();
window.frame.setVisible(true);
//
String path = "disney_login.jpg"; // 背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)
ImageIcon background = new ImageIcon(path); // 背景图片
JLabel label_pic = new JLabel(background); // 把背景图片显示在一个标签里面
label_pic.setBounds(0, 0, frame.getWidth(), frame.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板
JPanel imagePanel = (JPanel) frame.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
frame.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setBounds(177, 149, 72, 18);
frame.getContentPane().add(lblNewLabel);
// JLabel lblNewLabel_1 = new JLabel(jie.jianjie);
// lblNewLabel_1.setBounds(68, 63, 795, 18);
// frame.getContentPane().add(lblNewLabel_1);
imagePanel.setOpaque(false);
frame.getLayeredPane().add(label_pic, new Integer(Integer.MIN_VALUE)); // 把背景图片添加到分层窗格的最底层作为背景
} catch (Exception e) {
e.printStackTrace();
}
显示效果如下:
使用JLabel显示动态内容
想要显示动态内容,那么在定义JLabel时就不能使用静态的文字或者是图片。Java Swing为我们提供了在不同窗体间传递自定义类的方法。只要我们能够把比如不同游乐项目的各类信息定义在一个完整的类中,然后把这个类传递到显示游乐项目信息的窗体,就能够根据实时读取的数据库调取到类中的内容来实时改变JLabel中显示的内容。具体的实现方法如下:
首先在项目的源文件中创建一个单独的包含游乐项目信息的类:
public class jieshao {
public String name;
public String jianjie;
public String dizhi;
public String queue;
public jieshao(String name, String jianjie, String dizhi, String queue) {
super();
this.name = name;
this.jianjie = jianjie;
this.dizhi = dizhi;
this.queue = queue;
}
}
然后在要接收类的窗体中定义一个该类的对象:
最后就能够在本窗体的控件中直接调用该类显示对应的内容:
String path = jie.dizhi; // 背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下)
ImageIcon background = new ImageIcon(path); // 背景图片
JLabel label = new JLabel(background); // 把背景图片显示在一个标签里面
label.setBounds(0, 0, frame.getWidth(), frame.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板
JPanel imagePanel = (JPanel) frame.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
frame.getContentPane().setLayout(null);
Button
JButton是继承AbstractButton类而来,而AbstractButton本身是一个抽象类,里面定义了许多组件设置的方法与组件事件驱动 方法(Event handle),如addActionListener()、setText等,详情请看相关手册,所提供的方法不下50种,可说是非常重要的一个 类。事实上,AbstractButton类不公被JButton所继承,它同时还被JMenuItem、JToggleButton、JCheckBox、JRadioButton等类所 继承,提供给这些类强大且方便的功能,而且在使用上更能掌握这些组件的特性。
JButton共有4个构造函数:
JButton():建立一个按钮。
JButton(Icon icon):建立一个有图像的按钮。
JButton(String icon):建立一个有文字的按钮。
JButton(String text,Icon icon):建立一个有图像与文字的按钮。
一般的使用中,JButton往往作为触发另一个窗体的按钮,与调取后端数据库相关的操作需要由Button控件来进行触发。比如Login.java中调取注册界面的Button的定义代码如下:
显示效果:
我们把按下该按钮时需要执行的操作写在该Button的actionPerformed(监听器)方法中。就能在按下的时候实现想要的功能,比如图中就是按下该Button调用register.java窗体。这样就能实现窗体之间的互相调用了。
comboBox
JComboBox类是一个组合按钮或可编辑字段和下拉列表的组件。
在实际的使用中一般用于设置下拉框,使用该类的addItem控件,就能够自由地设置需要个数的可选下拉框。比如ticket_order.java界面中,用来选择购票日期的下拉框,就是通过这样的方式来实现的。具体的代码实现如下:
显示效果如下:
总结
完整的项目界面代码附在下载链接中:
项目的展示视频上传在b站:
第一次把一个完整的项目传到CSDN上,也算是给自己付出的时间的一个记录。