在看到applet和Swing的时候,我想起了winform,以及java beans包中各种所谓的组件的时候,一切都那么似曾相识。

Swing是AWT的扩展,它提供了更强大和更灵活的组件集合。 除了我们已经熟悉的组件如按钮、复选框和标签外,Swing还包括许多新的组件,如选项板、 滚动窗口、树、表格。许多一些开发人员已经熟悉的组件,如按钮,在Swing都增加了新功 能。而且,按钮的状态改变时按钮的图标也可以随之改变。 与AWT组件不同,Swing组件实现不包括任何与平台相关的代码。Swing组件是纯Java 代码,因此与平台无关。一般用轻量级(lightweight)这个术语描述这类组件。 在Swing包中的类和接口的数量众多,本章只对其中的一部分简要描述。Swing包是开 发人员希望自己仔细研究的部分。

在使用swing时要引入的包:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

一些常用的控件以及对应的事件:

1)内容窗格:

得到内容空格   Container getContentPane( )      Container contentPane = getContentPane();

容器的add( )方法在内容窗格中增加一个组件   add(comp)  contentPane.add(jl);

2)JTextComponent类,JTextComponent类是JComponent的子类

3)JButtom类,AbstractButton类扩展JComponent类。 AbstractButton类包含多种方法,用于控制按钮行为,检查复选框和单选按钮

可以通过下列方法读写与按钮相关的文字: String getText( ) void setText(String s)

AbstractButton抽象类的子类在按钮被按下时生成行为事件。

通过如下的方法注册和注 销这些事件的监听器: void addActionListener(ActionListener al) void removeActionListener(ActionListener al)

4)JCheckBox类提供复选框的功能

当选中或取消复选框时,生成一个项目事件。这个事件由itemStateChanged( )处理。在 itemStateChanged( )内部,getItem( )方法获取产生事件的JCheckBox对象。getText( )方法获 取复选框的文字,并用这个文字设置文本域。

cb.addItemListener(this); 增加事件

处理理件:

public void itemStateChanged(ItemEvent ie)

{ JCheckBox cb = (JCheckBox)ie.getItem(); jtf.setText(cb.getText()); }

5)单选按钮由JRadioButton类支持,JRadioButton也是AbstractButton抽象类的子类。

单选按钮按下产生的行为事件,由actionPerformed( )处理。getActionCommand( ) 方法 获取与单选按钮相关的文字,并用此文字设置文本域。

b2.addActionListener(this);  增加事件

public void actionPerformed(ActionEvent ae) { tf.setText(ae.getActionCommand()); }  处理事件

6)Swing通过JComboBox类支持组合框(combo box,一个文本域和下拉列表的组合), JComboBox类是JComponent的子类。组合框通常显示一个可选条目,但可允许用户在一个 628 第 3 部分 Java 软件开发技术 下拉列表中选择多个不同条目。用户也可以在文本域内键入选择项

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*
<applet code="JComboBoxDemo" width=300 height=100>
</applet>
*/ public class JComboBoxDemo extends JApplet
implements ItemListener {
JLabel jl;
ImageIcon france, germany, italy, japan;
public void init() {
// Get content pane
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
// Create a combo box and add it
// to the panel
JComboBox jc = new JComboBox();
jc.addItem("France");
jc.addItem("Germany");
jc.addItem("Italy");
jc.addItem("Japan");
jc.addItemListener(this);
contentPane.add(jc);
// Create label
jl = new JLabel(new ImageIcon("france.gif"));
contentPane.add(jl);
}
public void itemStateChanged(ItemEvent ie) {
String s = (String)ie.getItem();
jl.setIcon(new ImageIcon(s + ".gif"));
}
}

7)选 项 窗 格

选项窗格被封装为JTabbedPane类,JTabbedPane是JComponent的子类。使用默认构造 函数时,选项的定义方法如下所示: void addTab(String str, Component comp) 其中,str是标签的标题,comp是应加入标签的组件。典型情况下,加入的是JPanel 或 其子类。 在小应用程序中使用选项窗格的一般过程如下所示: 1. 创建JTabbedPane对象。 2. 调用addTab( ) 方法在窗格中增加一个标签(这个方法的参数是标签的标题和它包 含的组件)。 3. 重复步骤2,增加标签。 4. 将选项窗格加入小应用程序的内容窗格。

public void init() {
JTabbedPane jtp = new JTabbedPane();
jtp.addTab("Cities", new CitiesPanel());
jtp.addTab("Colors", new ColorsPanel());
jtp.addTab("Flavors", new FlavorsPanel());
getContentPane().add(jtp);
} class CitiesPanel extends JPanel {
public CitiesPanel() {
JButton b1 = new JButton("New York");
add(b1);
JButton b2 = new JButton("London");
add(b2);
JButton b3 = new JButton("Hong Kong");
add(b3);
JButton b4 = new JButton("Tokyo");
add(b4);
}
}

8)JScrollPane类  流动窗格

public class JScrollPaneDemo extends JApplet {
public void init() {
// Get content pane
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
// Add 400 buttons to a panel
JPanel jp = new JPanel();
jp.setLayout(new GridLayout(20, 20));
int b = 0;
for(int i = 0; i < 20; i++) {
for(int j = 0; j < 20; j++) {
jp.add(new JButton("Button " + b));
++b;
}
}
// Add panel to a scroll pane
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(jp, v, h);
// Add scroll pane to the content pane
contentPane.add(jsp, BorderLayout.CENTER);
}
}

9)Jtree  树形控件

当节点扩展或收缩时, JTree 对象生成事件。 addTreeExpansionListener( ) 和 removeTreeExpansionListener( )方法注册或注销监听这些通知的监听器。

10)Jtable 表型控件

JAVA-基础(十) Swing的更多相关文章

  1. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  2. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  3. Java基础(十二)--clone()方法

    Clone在Java中就是用来复制对象,通过分配一个和源对象相同大小的内存空间,然后创建一个新的对象,那么他和=的区别在哪? 通过=实现对象拷贝: @Data @NoArgsConstructor @ ...

  4. java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问

    本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...

  5. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的

    本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...

  6. java基础(swing+jsp+mybatis配置)

    JAVA SE GUI编程(swing) # 组件 描述 1 JFrame 一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器) 2 JDialog 对话框 常用的中间 ...

  7. java基础学习——Swing图形化用户界面编程

    原文链接:https://blog.csdn.net/yiziweiyang/article/details/52317240 链接有详细解释,也有例子,以下是个人参照例子实验的代码. package ...

  8. java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

    将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...

  9. 黑马程序员 Java基础<十八>---> 网路编程

    --------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 第一  概述 一.概述: 1.网络模型:OSI参考模型和TCP ...

  10. java基础(十八)----- java动态代理原理源码解析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 静态代理 1.静态代理 静态代理:由程序员创建或特定工 ...

随机推荐

  1. ABAP系统字段

    SY是一个全局的结构体变量,在词典中已定义过.输入SE11到ABAP字典中. 输入SYST点击显示 附录D 系统字段功能列表 字段名 类型 长度 应用目的 说明 ABCDE CHAR 26 常量 字母 ...

  2. Jenkins系列——使用Dashboard View分类展示作业

    1.目标 创建的作业多了,在一个视图中展示多有不便.因此需要使用 Dashboard View 将作业按照后缀进行分类展示. 如下图,可以按照后缀添加CODE,TEST和OTHER视图. 2.环境说明 ...

  3. Locust安装教程与使用

    Locust安装教程与使用官网地址:https://github.com/locustio/locust 如果是python3+以上的环境,需要下载locust项目源码进行安装 因Centos7.2环 ...

  4. 重写strcat函数,以实现strcat的功能

    char * strcatTest(char *dst,const char *src);Action(){ char a[]="come on"; char b[]=" ...

  5. (转载)资源字典(Pro WPF 学习)

    原地址:http://www.cnblogs.com/yxhq/archive/2012/07/09/2582508.html 1.创建资源字典 下面是一个资源字典(AppBrushes.xaml), ...

  6. Securityonion介绍

        下载地址     https://github.com/Security-Onion-Solutions/security-onion/blob/master/Verify_ISO.md   ...

  7. Cookie 没你不行

    Cookie 没你不行 Cookie 没你不行 前言: Cookie 是什么 起源 到底是什么? 使用场景 如何使用cookie Cookie 和http协议 (服务端操作cookie) Cookie ...

  8. Python-OpenCV中的filter2D()函数

    使用自定义内核对图像进行卷积.该功能将任意线性滤波器应用于图像.支持就地操作.当光圈部分位于图像外部时,该功能会根据指定的边框模式插入异常像素值. 语法 函数原型: dst=cv.filter2D(s ...

  9. CAD控件的鼠标事件(网页版)

    _DMxDrawXEvents::MouseEvent CAD控件中的鼠标事件. 参数 说明 LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标 ...

  10. 2018.5.6 解决问题:oracle------ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

    解决问题:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 或者是重启电脑之后无法进入控制台企业管理器(OEM)图形化界面(重新添加注入监听器就行了 文件listener.org) ...