Java Swing程序设计实战
作者:Tomas·Wilson 发布时间:2023-04-09 07:05:42
标签:Java,Swing,程序,设计
一、按钮组件
1.1 提交按钮组件
package swing;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
public class JButtonTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public JButtonTest() {
URL url = JButtonTest.class.getResource("imageButton.jpg");
Icon icon = new ImageIcon(url);
setLayout(new GridLayout(3, 2, 5, 5)); // 设置网格布局管理器
Container c = getContentPane(); // 创建容器
for (int i = 0; i < 5; i++) {
// 创建按钮,同时设置按钮文字与图标
JButton J = new JButton("button" + i, icon);
c.add(J); // 在容器中添加按钮
if (i % 2 == 0) {
J.setEnabled(false); // 设置其中一些按钮不可用
}
}
JButton jb = new JButton(); // 实例化一个没有文字与图片的按钮
jb.setMaximumSize(new Dimension(90, 30)); // 设置按钮与图片相同大小
jb.setIcon(icon); // 为按钮设置图标
jb.setHideActionText(true);
jb.setToolTipText("图片按钮"); // 设置按钮提示为文字
jb.setBorderPainted(false); // 设置按钮边界不显示
jb.addActionListener(new ActionListener() { // 为按钮添加监听事件
public void actionPerformed(ActionEvent e) {
// 弹出确认对话框
JOptionPane.showMessageDialog(null, "弹出对话框");
}
});
c.add(jb); // 将按钮添加到容器中
setTitle("创建带文字与图片的按钮");
setSize(350, 150);
setVisible(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String args[]) {
new JButtonTest();
}
}
1.2 复选框组件
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CheckBoxTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel panel1 = new JPanel();
private JPanel panel2 = new JPanel();
private JTextArea jt = new JTextArea(3, 10);
private JCheckBox jc1 = new JCheckBox("1");
private JCheckBox jc2 = new JCheckBox("2");
private JCheckBox jc3 = new JCheckBox("3");
public CheckBoxTest() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(panel1, BorderLayout.NORTH);
final JScrollPane scrollPane = new JScrollPane(jt);
panel1.add(scrollPane);
c.add(panel2, BorderLayout.SOUTH);
panel2.add(jc1);
jc1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (jc1.isSelected())
jt.append("复选框1被选中\n");
}
});
panel2.add(jc2);
jc2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (jc2.isSelected())
jt.append("复选框2被选中\n");
}
});
panel2.add(jc3);
jc3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (jc3.isSelected())
jt.append("复选框3被选中\n");
}
});
setSize(200, 160);
setVisible(true);
setTitle("复选框的使用");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new CheckBoxTest();
}
}
二、列表组件
2.1 JComboBox类
import java.awt.*;
import javax.swing.*;
public class JComboBoxModelTest extends JFrame {
private static final long serialVersionUID = 1L;
JComboBox<String> jc = new JComboBox<>(new MyComboBox());
JLabel jl = new JLabel("请选择证件");
public JComboBoxModelTest() {
setSize(new Dimension(160, 180));
setVisible(true);
setTitle("在窗口中设置下拉列表框");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(jl);
cp.add(jc);
}
public static void main(String[] args) {
new JComboBoxModelTest();
}
}
class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String> {
/**
*
*/
private static final long serialVersionUID = 1L;
String selecteditem = null;
String[] test = { "身份证", "军人证", "学生证", "工作证" };
public String getElementAt(int index) {
return test[index];
}
public int getSize() {
return test.length;
}
public void setSelectedItem(Object item) {
selecteditem = (String) item;
}
public Object getSelectedItem() {
return selecteditem;
}
public int getIndex() {
for (int i = 0; i < test.length; i++) {
if (test[i].equals(getSelectedItem()))
return i;
}
return 0;
}
}
2.2 列表框组件
import java.awt.*;
import javax.swing.*;
public class JListTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public JListTest() {
Container cp = getContentPane();
cp.setLayout(null);
JList<String> jl = new JList<>(new MyListModel());
JScrollPane js = new JScrollPane(jl);
js.setBounds(10, 10, 100, 100);
cp.add(js);
setTitle("在这个窗体中使用了列表框");
setSize(200, 150);
setVisible(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String args[]) {
new JListTest();
}
}
class MyListModel extends AbstractListModel<String> {
/**
*
*/
private static final long serialVersionUID = 1L;
private String[] contents = { "列表1", "列表2", "列表3", "列表4", "列表5", "列表6" };
public String getElementAt(int x) {
if (x < contents.length)
return contents[x++];
else
return null;
}
public int getSize() {
return contents.length;
}
}
三、文本组件
3.1 文本框组件
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextFieldTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public JTextFieldTest() {
setSize(250, 100);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp = getContentPane();
getContentPane().setLayout(new FlowLayout());
final JTextField jt = new JTextField("aaa", 20);
final JButton jb = new JButton("清除");
cp.add(jt);
cp.add(jb);
jt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
jt.setText("触发事件");
}
});
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jt.setText("");
jt.requestFocus();
}
});
setVisible(true);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
3.2 密码框
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextFieldTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public JTextFieldTest() {
setSize(250, 100);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp = getContentPane();
getContentPane().setLayout(new FlowLayout());
//final JTextField jt=new JTextField("aaa",20);
JPasswordField jp = new JPasswordField("", 20);
jp.setEchoChar('*');
final JButton jb = new JButton("清除");
cp.add(jp);
cp.add(jb);
jp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
jp.setText("触发事件");
}
});
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jp.setText("");
jp.requestFocus();
}
});
setVisible(true);
}
public static void main(String[] args) {
new JTextFieldTest();
}
}
3.3 文本域组件
import java.awt.*;
import javax.swing.*;
public class JTextAreaTest extends JFrame {
public JTextAreaTest() {
setSize(200, 100);
setTitle("定义自动换行的文本域");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container cp = getContentPane();
JTextArea jt = new JTextArea("文本域", 6, 6);
jt.setLineWrap(true);
cp.add(jt);
setVisible(true);
}
public static void main(String[] args) {
new JTextAreaTest();
}
}
四、常用时间 *
4.1 动作事件 *
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SimpleEvent extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton jb = new JButton("我是按钮,点击我");
public SimpleEvent() {
setLayout(null);
setSize(200, 100);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Container cp = getContentPane();
cp.add(jb);
jb.setBounds(10, 10, 100, 30);
jb.addActionListener(new jbAction());
setVisible(true);
}
class jbAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
jb.setText("我被单击了");
}
}
public static void main(String[] args) {
new SimpleEvent();
}
}
4.2 焦点事件 *
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FocusEventTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public FocusEventTest() {
setSize(250, 100);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container cp = getContentPane();
getContentPane().setLayout(new FlowLayout());
final JLabel label = new JLabel();
getContentPane().add(label);
JTextField jt = new JTextField("请单击其他文本框", 10);
JTextField jt2 = new JTextField("请单击我", 10);
cp.add(jt);
cp.add(jt2);
jt.addFocusListener(new FocusListener() {
// 组件失去焦点时调用的方法
public void focusLost(FocusEvent arg0) {
JOptionPane.showMessageDialog(null, "文本框失去焦点");
}
// 组件获取键盘焦点时调用的方法
public void focusGained(FocusEvent arg0) {
}
});
setVisible(true);
}
public static void main(String[] args) {
new FocusEventTest();
}
}
来源:https://blog.csdn.net/weixin_46322367/article/details/116887998


猜你喜欢
- 最近在维护老项目,老项目有一个地方需要修改,就是垂直跑马灯的问题,之前的垂直跑马灯是只有文字跑马灯,新版需要加上。之前是用的MarqueeV
- OAuth2简介OAuth 是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个
- 一、链表1.1 概述链表是真正动态的数据结构,最简单的动态数据结构,基本用于辅助组成其他数据结构。数据存储在“节点”(Node)中优点:真正
- 四种隔离机制不要忘记:(1,2,4,8)1.read-uncommitted:能够去读那些没有提交的数据(允许脏读的存在)2.read-co
- 一般使用@RequestBody接收的时候报400都是传入的json字符串和对应封装的对象不对应造成的首先要注意封装的对象中的字段类型有没有
- 本文实例为大家分享了ImageSwitcher图像切换器的实现代码,供大家参考,具体内容如下描述在该实例中,提供一个图片切换器和两个点击按钮
- menu部分xml代码<?xml version="1.0" encoding="utf-8"
- java字段值为null,不返回该字段类上打注解@JsonSerialize(include = JsonSerialize.Inclusi
- 前言话不多说,直接上图:笔者使用 RecyclerView 的 ItemTouchHelper 来实现这个效果,过程非常简单。为了学习,这里
- 前言Spring Seuciry相关的内容看了实在是太多了,但总觉得还是理解地不够巩固,还是需要靠知识输出做巩固。相关版本:java: jd
- multipartResolver上传文件配置1、gradle配置 compile ('commons-i
- SpringBoot整合Log4j2以及配置详解SpringBoot整合Log4j2步骤:1、删除spring-boot-starter-p
- 线程池中ThreadGroup的坑在Java中每一个线程都归属于某个线程组管理的一员,例如在主函数main()主工作流程中产生一个线程,则产
- 参考文章Android中实时获取音量分贝值详解:https://www.jb51.net/article/64806.htmpublic c
- 1.效果图如下:2.controller层代码:import java.util.HashMap;import java.util.Map;
- 前言面向切面编程,利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发
- 先给大家看下效果图:MenuPopwindow:package com.cloudeye.android.cloudeye.view;imp
- 本文实例讲述了Android编程自定义对话框(Dialog)位置及大小的方法。分享给大家供大家参考,具体如下:代码:package ange
- 如下所示://定义二维数组写法1 class numthree{public static void main(String[] args)
- 今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中