当前位置:首页 > Java资讯 > 正文内容

Java Swing:从入门到精通,实战经验分享

admin4周前 (07-01)Java资讯6

Java Swing:从入门到精通,实战经验分享

一、Swing简介

Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件和布局管理器,使得开发者可以轻松地创建出美观、实用的桌面应用程序。自从Java 1.1版本引入Swing以来,它已经成为Java开发者必备的技能之一。本文将从Swing的入门、进阶到实战,分享我的经验与心得。

二、Swing入门

1. Swing组件

Swing组件包括按钮、文本框、标签、列表框、表格等,它们是构建GUI的基础。以下是一些常用的Swing组件:

(1)按钮(JButton):用于触发事件,如点击按钮执行操作。

(2)文本框(JTextField):用于输入文本。

(3)标签(JLabel):用于显示文本或图片。

(4)列表框(JList):用于显示一系列可选择的项。

(5)表格(JTable):用于显示和编辑数据。

2. 布局管理器

Swing提供了多种布局管理器,用于控制组件在容器中的位置和大小。以下是一些常用的布局管理器:

(1)FlowLayout:按照组件添加的顺序排列。

(2)BorderLayout:将组件放置在容器的五个区域(北、南、东、西、中)。

(3)GridLayout:将组件按照行列排列。

(4)GridBagLayout:灵活地安排组件在容器中的位置。

三、Swing进阶

1. 事件处理

Swing的事件处理机制包括事件源、事件监听器和事件。以下是一些常用的事件监听器:

(1)ActionListener:用于处理按钮点击事件。

(2)MouseListener:用于处理鼠标事件,如点击、移动等。

(3)KeyListener:用于处理键盘事件,如按键、释放等。

2. 组件扩展

Swing组件可以通过继承和扩展来实现自定义功能。以下是一些常用的扩展组件:

(1)JTextField:可以扩展为密码框(JPasswordField)。

(2)JComboBox:可以扩展为下拉列表框(JComboBox)。

(3)JTable:可以扩展为数据表格(JTable)。

四、Swing实战

1. 创建一个简单的计算器

以下是一个使用Swing创建的简单计算器的示例代码:

```java

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Calculator extends JFrame {

private JTextField firstNumber;

private JTextField secondNumber;

private JButton addButton;

private JButton subtractButton;

private JLabel resultLabel;

public Calculator() {

setTitle("Calculator");

setSize(300, 200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new FlowLayout());

firstNumber = new JTextField(10);

secondNumber = new JTextField(10);

addButton = new JButton("+");

subtractButton = new JButton("-");

resultLabel = new JLabel("Result: ");

add(firstNumber);

add(secondNumber);

add(addButton);

add(subtractButton);

add(resultLabel);

addButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int num1 = Integer.parseInt(firstNumber.getText());

int num2 = Integer.parseInt(secondNumber.getText());

int sum = num1 + num2;

resultLabel.setText("Result: " + sum);

}

});

subtractButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int num1 = Integer.parseInt(firstNumber.getText());

int num2 = Integer.parseInt(secondNumber.getText());

int difference = num1 - num2;

resultLabel.setText("Result: " + difference);

}

});

setVisible(true);

}

public static void main(String[] args) {

new Calculator();

}

}

```

2. 创建一个图书管理系统

以下是一个使用Swing创建的图书管理系统的示例代码:

```java

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

public class BookManager extends JFrame {

private JTextField titleField;

private JTextField authorField;

private JButton addButton;

private JButton deleteButton;

private JList bookList;

private DefaultListModel listModel;

private List books;

public BookManager() {

setTitle("Book Manager");

setSize(400, 300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

titleField = new JTextField(20);

authorField = new JTextField(20);

addButton = new JButton("Add");

deleteButton = new JButton("Delete");

bookList = new JList<>();

listModel = new DefaultListModel<>();

books = new ArrayList<>();

listModel.addAll(books);

bookList.setModel(listModel);

JPanel inputPanel = new JPanel();

inputPanel.add(new JLabel("Title:"));

inputPanel.add(titleField);

inputPanel.add(new JLabel("Author:"));

inputPanel.add(authorField);

JPanel buttonPanel = new JPanel();

buttonPanel.add(addButton);

buttonPanel.add(deleteButton);

add(inputPanel, BorderLayout.NORTH);

add(new JScrollPane(bookList), BorderLayout.CENTER);

add(buttonPanel, BorderLayout.SOUTH);

addButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String title = titleField.getText();

String author = authorField.getText();

String book = title + " by " + author;

books.add(book);

listModel.addElement(book);

titleField.setText("");

authorField.setText("");

}

});

deleteButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int index = bookList.getSelectedIndex();

if (index != -1) {

books.remove(index);

listModel.remove(index);

}

}

});

setVisible(true);

}

public static void main(String[] args) {

new BookManager();

}

}

```

五、总结

Swing是Java开发中常用的GUI工具包,它具有丰富的组件和布局管理器,可以帮助开发者轻松地创建出美观、实用的桌面应用程序。本文从Swing的入门、进阶到实战,分享了我在Java Swing开发过程中的经验与心得。希望对大家有所帮助!

相关文章

Java编程中的数据类型:深入解析与实战技巧

Java编程中的数据类型:深入解析与实战技巧

一、引言 在Java编程中,数据类型是基础中的基础,它决定了变量能够存储的数据类型和范围。掌握Java中的数据类型,是成为一名优秀Java开发者的必备技能。本文将深入解析Java中的数据类型,并分享...

Java多线程的奥秘:深入浅出解析与实践

Java多线程的奥秘:深入浅出解析与实践

一、引言 Java作为一种广泛应用于企业级开发的语言,其线程机制是Java并发编程的核心。多线程编程可以让程序更加高效地利用CPU资源,提高程序执行效率。本文将深入浅出地解析Java多线程的奥秘,并...

洋葱架构:Java行业中的“神秘洋葱”,如何层层剥开其精髓?

洋葱架构:Java行业中的“神秘洋葱”,如何层层剥开其精髓?

一、洋葱架构的起源与发展 洋葱架构(Onion Architecture)起源于2004年,由Martin Fowler提出。它是一种软件设计模式,旨在解决传统的分层架构在大型项目中的问题。在Jav...

Java数组:深度解析与实战技巧

Java数组:深度解析与实战技巧

一、Java数组概述 在Java编程中,数组是一种常用的数据结构,用于存储具有相同数据类型的元素序列。数组具有固定的长度,一旦创建,其长度就无法改变。本文将深入解析Java数组的概念、特点以及在实际...

联邦学习:揭秘Java领域的隐私保护新利器

联邦学习:揭秘Java领域的隐私保护新利器

随着大数据、人工智能等技术的飞速发展,数据安全问题越来越受到广泛关注。如何保护用户隐私,同时实现数据共享和模型训练,成为了一个亟待解决的难题。近年来,联邦学习(Federated Learning)...

Java中的Switch表达式:简化代码的利器

Java中的Switch表达式:简化代码的利器

一、引言 在Java编程语言中,switch语句一直是处理多分支逻辑的常用手段。然而,随着Java 12的推出,switch表达式(Switch Expression)的出现,为switch语句带来...