在看到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. 下一代的前端构建工具:parcel打包react

    1. parcel很受欢迎,webpack太慢了,试试Parcel下一代的前端构建工具 2.Parcel很快,但缺少好多插件,没有base64,没有办法拆分打包文件.... 3.总结:适合小项目 4. ...

  2. 使用Robot类模拟鼠标、键盘事件

    Robot类用于模拟鼠标.键盘事件,生成本机系统输入事件.Robot 的主要用于自动化.自运行的程序和其他需要自动控制鼠标和键盘的程序 相当于实际操作的效果,不仅仅只是生成对应的鼠标.键盘事件.比如R ...

  3. 基于名称的虚拟主机-Apache

    基于名称的虚拟主机和基于IP的虚拟主机的对比 基于IP的虚拟主机使用连接的IP地址来识别(区分)正确的虚拟主机,所以对于每一个虚拟主机,你都需要有独立的IP地址. 基于名称的虚拟主机,服务器依赖于客户 ...

  4. HTML5 JSDOM

    1,HTML5 新语义化标签 - nav -- 表示导航 - header -- 表示页眉 -- 头部 - section -- 表示区块 -- 类似于div - main -- 文档主要内容 - a ...

  5. AngularJS(五):表单及输入验证

    本文也同步发表在我的公众号“我的天空” 表单基础 表单是HTML中很重要的一个部分,基本上我们的信息录入都依靠表单,接下来我们学习如何在AngularJS中使用表单,首先看以下示例代码: <bo ...

  6. vuejs 学习旅程之 vue-resource

    如上图,所有的数据是从php获取过来的.所以就引出了vuejs 与php通信之说.百度了一下需要使用到一个vue插件 就是今天的主题 vuejs 学习旅程之 vue-resource vue-reso ...

  7. 文件系统结构-《循序渐进linux》

    1.目录结构 很多linux的发行版都遵循FSSTND标准,这一标准仅包含系统最基本的文件. /dev 设备文件 /bin 可执行的二进制文件 /opt /root 超级用户的主目录 /home 每个 ...

  8. SQL查找TCar表中同一辆车前后两条记录的CarId,两条记录中有多个字段值一样

    查询同一个表中某一字段值相同的记录 select * from 表名 where 字段 in(select 字段 from 表名 group by 字段 having count(1)>1) s ...

  9. Codeforces Round #411 div2

    A. Fake NP 题意:询问一个区间[L,R]出现次数最多的正整数因子(>1). 一个区间内一个因子P出现次数大概为[R/P]-[(L-1)/P],约等于(R-L+1)/P,P取2时最优.注 ...

  10. thinkphp 跳转

    1   $this -> redirect('index',array('type'=>2,'id'=>0));   //直接跳转 2  $this->success('提交失 ...