文章目录
前言
最近在写一个java的小项目,用到了Java swing的技术,本篇博客对Java swing作ava平台的用户界面(UI)工具包。它提供了一组图形用户界面(GUI)组件,例如按钮、文本框、标签等,以及布局管理器,用于创建基于桌面的应用程序。在本篇博客中,我将介绍JavaSwing的基本概念和用法。
一、Java swing概述?
Swing是Java平台的一部分,它的主要目的是提供一个跨平台的用户界面工具包。Swing提供了一组GUI组件和布局管理器,用于构建桌面应用程序。Swing的设计目标是让开发人员能够轻松地创建具有丰富用户界面的应用程序,并且这些应用程序可以在不同的操作系统上运行。
Swing是基于Java AWT(抽象窗口工具包)构建的。AWT是Java平台的另一个用户界面工具包,但它的主要问题是不跨平台。Swing通过提供一组跨平台的GUI组件和布局管理器来解决这个问题。
二、Java swing 的组件
Swing提供了许多GUI组件,包括标签、按钮、文本框、下拉列表、表格等。这些组件都是从JComponent类继承而来的。JComponent类是Swing组件的基类,它提供了一些通用的方法和属性,例如事件处理和边框。
下面是一些常用的Swing组件:
- JLabel:用于显示文本或图像。
//显示文本JLabel label = new JLabel("Hello, World!");
- JButton:用于触发动作事件。
JButton button = new JButton("Click me!");button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 处理按钮点击事件的代码 }});
- JTextField:用于输入文本。
JTextField textField = new JTextField(20);textField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 处理文本框的回车事件的代码 String text = textField.getText(); // 处理文本框输入的代码 }});
- JPasswordField:用于输入密码。
passwordField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { char[] password = passwordField.getPassword(); String passwordString = new String(password); // 处理密码输入完成后的事件的代码 }});
- JComboBox:用于显示下拉列表。
String[] options = {"Option 1", "Option 2", "Option 3"};JComboBox<String> comboBox = new JComboBox<>(options);comboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String selectedOption = (String) comboBox.getSelectedItem(); // 处理下拉框选项改变事件的代码 }});
- JTable:用于显示表格数据。
三、Java swing 的布局管理器
Swing提供了各种布局管理器,用于管理组件的位置和大小。布局管理器可以帮助我们在不同的平台上创建具有相同外观的应用程序。
下面是一些常用的布局管理器:
- FlowLayout:按照组件的添加顺序在容器中排列组件。
- BorderLayout:将容器划分为5个区域:北、南、东、西和中心。每个区域只能包含一个组件。
- GridLayout:将容器划分为网格,在每个网格中放置一个组件。
- GridBagLayout:将容器划分为网格,并且可以更灵活地控制每个组件的大小和位置。
四、Java swing 的事件处理
Swing使用事件驱动模型来处理用户输入事件。当用户与Swing组件交互时,Swing将生成相应的事件,并将其传递给事件处理程序。事件处理程序可以是一个方法、一个内部类或一个独立的对象。
下面是一些常用的Swing事件:
- ActionEvent:当用户单击按钮或菜单项时触发。
- KeyEvent:当用户按下或释放键盘上的键时触发。
- MouseEvent:当用户单击、按下或释放鼠标按钮时触发。
- WindowEvent:当窗口打开、关闭或失去焦点时触发。
五、Java swing 的示例代码
下面是一个小球移动的案例:
package com.hspedu.event;import javax.swing.*;import java.awt.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.security.Key;public class BallMove extends JFrame{//窗口 MyPanel mp = null; public static void main(String[] args) { BallMove ballMove = new BallMove(); } public BallMove(){ mp = new MyPanel(); this.add(mp); this.setSize(400,400); //窗口JFrame对像可以监听键盘事件 this.addKeyListener(mp); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }}//画板,KeyListener监听键盘事件class MyPanel extends JPanel implements KeyListener { //为了让小球可以移动,把他的左上坐标设置成变量 int x=10; int y=10; @Override public void paint(Graphics g) { super.paint(g); g.fillOval(x,y,20,20);//默认黑色 } //有字符输入时,该方法就会触发 @Override public void keyTyped(KeyEvent e) { } //当某个键按下时 @Override public void keyPressed(KeyEvent e) { System.out.println((char)e.getKeyCode()+"被按下。。。"); //根据用户按下的不同键来处理小球的移动 if (e.getKeyCode() == KeyEvent.VK_DOWN){ //KeyEvent.VK_DOWN对应向下的箭头,Java中会给每一个值分配对应的(int)值 y++; }else if(e.getKeyCode() == KeyEvent.VK_UP){//向上的箭头 y--; }else if(e.getKeyCode() == KeyEvent.VK_RIGHT){//右箭头 x++; }else if(e.getKeyCode() == KeyEvent.VK_LEFT){//左箭头 x--; } //重绘 this.repaint(); } //当某个键释放 @Override public void keyReleased(KeyEvent e) { }}
效果图:
通过上下左右键我们可以操作小球移动。这时候想,假如我把小球换成坦克,在画板上设置其它的坦克,再设置一些不可通过的障碍,这样,童年游戏坦克大战的雏形是不是就出来了?
总结
Java Swing是Java平台的一个强大的GUI工具包,它提供了一组跨平台的GUI组件和布局管理器,以及事件处理机制。通过使用Swing,我们可以轻松地创建具有丰富用户界面的桌面应用程序。
来源地址:https://blog.csdn.net/a545__27/article/details/131583179