原文地址:http://blog.csdn.net/guanzhouxuezi/article/details/5986193
我觉得讲一个知识点最好的方式是先拿一个实例过来,然后照着例子讲。我们这篇文章就采取这种方式,请看代码:
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class Swing extends JFrame
- {
- private JLabel lab1;
- private JRadioButton pla,bol,ita;
- private ButtonGroup buttonG;
- public Swing()
- {
- JFrame frame = new JFrame("小Q Swing");
- Container c = frame.getContentPane();
- c.setLayout(new FlowLayout());
- lab1 = new JLabel("Plain is seleceted");
- pla = new JRadioButton("Plain",true);
- bol = new JRadioButton("Bold",false);
- ita = new JRadioButton("italic",false);
- c.add(pla);
- c.add(bol);
- c.add(ita);
- c.add(lab1);
- pla.addItemListener(new Handler());
- bol.addItemListener(new Handler());
- ita.addItemListener(new Handler());
- buttonG = new ButtonGroup();
- buttonG.add(pla);
- buttonG.add(bol);
- buttonG.add(ita);
- frame.setBounds(0,0,250,150);
- frame.setVisible(true);
- frame.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- }
- class Handler implements ItemListener
- {
- public void itemStateChanged(ItemEvent e)
- {
- if(e.getSource()==pla)
- {
- lab1.setText("plain is selected");
- }
- else if(e.getSource()==bol)
- {
- lab1.setText("Bold is selected");
- }
- else
- {
- lab1.setText("Italic is selected");
- }
- }
- }
- public static void main(String [] args)
- {
- new Swing();
- }
- }
这段代码实现效果如下图:
是一个单选按钮的程序。
那下面就由这个程序来看看swing究竟是怎么一回事。
【Swing概述】Swing 是一个为Java设计的GUI工具包。 Swing 是Java基础类的一部分。 Swing 包括了图形用户界面 (GUI) 器件。Swing是在AWT的基础上发展起来的,但是它的组件拥有比AWT组件更多的功能,而且Swing提供的的屏幕显示元素比AWT更好,拥有更多的特性和工具,因而可以用来建立更加复杂的图形用户界面。在跨平台方面,Swing也远远优于AWT,因为Swing是用纯Java写成。Swing组件都以‘J’开头。
【程序剖析 】
1、在Swing类的构造器中,我们首先用JFrame类实例化了一个新的对象frame。JFrame类是Swing提供的三个顶层Swing容器(还有JDialog和JApplet)之一,用来放置Java应用程序的图形用户界面。JFrame类的一些方法如下图所示:
示例程序中所用的第三个构造方法,即创建以“title”为标题的窗口。有一点要注意的是,才创建的JFrame窗口时不可见的,必须要显式的调用函数setVisible(Boolean b)才能使其可见。如果我们要设置窗口的大小,那么可以调用setSize(int x,int y,int width,int height)函数。Container c = frame.getContentPane();的含义是获取窗口的组件放入容器c中。因为如果我们希望往JFrame中添加组件的话,那么必须要先取得ContendPane,然后使用add方法将组件添加到ContentPane中。
下面一句c.setLayout();则是用来设置GUI的布局。Java平台提供了五种常见的布局,分别是BorderLayout,BoxLayout,FlowLayout,GridBagLayout和GridLayout,读者可以在网上找到这五种布局的例子。
然后出现了一个JLabel类,JLabel是静态组件,可以显示文字但是不能对文字进行编辑,但是我们可以往里面添加图像。JLabel的构造方法如右:
其成员函数较多,我们在这里仅介绍其中的两个:String getText()和void SetText(String str);作用分别是返回标签的标题和设置标签的标题。
我们用到的另一个类是JRaidoButton类。该类主要用于构造一个单选按钮。
我想大家能很容易理解上面的程序了吧?那么赶紧动手自己写吧!
附:复选框应用示例
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class SwingCheckBox extends JFrame
- {
- private JLabel lab1,lab2;
- private JCheckBox pla,bol;
- public SwingCheckBox()
- {
- JFrame frame = new JFrame("小Q Swing");
- Container c = frame.getContentPane();
- c.setLayout(new FlowLayout());
- pla = new JCheckBox("Plain",true);
- bol = new JCheckBox("Bold",true);
- lab1 = new JLabel("Plain is selected");
- lab2 = new JLabel("Bold is selected");
- c.add(pla);
- c.add(bol);
- c.add(lab1);
- c.add(lab2);
- pla.addItemListener(new Handler());
- bol.addItemListener(new Handler());
- frame.setBounds(0,0,200,150);
- frame.setVisible(true);
- frame.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- }
- class Handler implements ItemListener
- {
- public void itemStateChanged(ItemEvent e)
- {
- if(e.getSource()==pla)
- {
- if(e.getStateChange()==ItemEvent.SELECTED)
- lab1.setText("Plain is selected");
- else
- lab1.setText("Plain is not selected");
- }
- if(e.getSource()==bol)
- {
- if(e.getStateChange()==ItemEvent.SELECTED)
- lab2.setText("Bold is Selected");
- else
- lab2.setText("Bold is not selected");
- }
- }
- }
- public static void main(String []args)
- {
- new SwingCheckBox();
- }
- }