Swing编程初步

原文地址:http://blog.csdn.net/guanzhouxuezi/article/details/5986193


我觉得讲一个知识点最好的方式是先拿一个实例过来,然后照着例子讲。我们这篇文章就采取这种方式,请看代码:

[java]  view plain copy
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. import javax.swing.*;  
  4. public class Swing extends JFrame  
  5. {  
  6.     private JLabel lab1;  
  7.     private JRadioButton pla,bol,ita;  
  8.     private ButtonGroup buttonG;  
  9.     public Swing()  
  10.     {  
  11.         JFrame frame = new JFrame("小Q Swing");  
  12.         Container c = frame.getContentPane();  
  13.         c.setLayout(new FlowLayout());  
  14.         lab1 = new JLabel("Plain is seleceted");  
  15.         pla = new JRadioButton("Plain",true);  
  16.         bol = new JRadioButton("Bold",false);  
  17.         ita = new JRadioButton("italic",false);  
  18.         c.add(pla);  
  19.         c.add(bol);  
  20.         c.add(ita);  
  21.         c.add(lab1);  
  22.         pla.addItemListener(new Handler());  
  23.         bol.addItemListener(new Handler());  
  24.         ita.addItemListener(new Handler());  
  25.         buttonG = new ButtonGroup();  
  26.         buttonG.add(pla);  
  27.         buttonG.add(bol);  
  28.         buttonG.add(ita);  
  29.           
  30.         frame.setBounds(0,0,250,150);  
  31.         frame.setVisible(true);  
  32.           
  33.         frame.addWindowListener(new WindowAdapter(){  
  34.             public void windowClosing(WindowEvent e)  
  35.             {  
  36.                 System.exit(0);  
  37.             }  
  38.         });  
  39.     }  
  40.     class Handler implements ItemListener  
  41.     {  
  42.         public void itemStateChanged(ItemEvent e)  
  43.         {  
  44.             if(e.getSource()==pla)  
  45.             {  
  46.                 lab1.setText("plain is selected");  
  47.             }  
  48.             else if(e.getSource()==bol)  
  49.             {  
  50.                 lab1.setText("Bold is selected");  
  51.             }  
  52.             else  
  53.             {  
  54.                 lab1.setText("Italic is selected");  
  55.             }  
  56.         }         
  57.     }  
  58.     public static void main(String [] args)  
  59.     {  
  60.         new Swing();  
  61.     }  
  62. }  

这段代码实现效果如下图:

是一个单选按钮的程序。

那下面就由这个程序来看看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类。该类主要用于构造一个单选按钮。

我想大家能很容易理解上面的程序了吧?那么赶紧动手自己写吧!

附:复选框应用示例

[java]  view plain copy
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. import javax.swing.*;  
  4. public class SwingCheckBox extends JFrame  
  5. {  
  6.     private JLabel lab1,lab2;  
  7.     private JCheckBox pla,bol;  
  8.     public SwingCheckBox()  
  9.     {  
  10.         JFrame frame = new JFrame("小Q Swing");  
  11.         Container c = frame.getContentPane();  
  12.         c.setLayout(new FlowLayout());  
  13.         pla = new JCheckBox("Plain",true);  
  14.         bol = new JCheckBox("Bold",true);  
  15.         lab1 = new JLabel("Plain is selected");  
  16.         lab2 = new JLabel("Bold is selected");  
  17.         c.add(pla);  
  18.         c.add(bol);  
  19.         c.add(lab1);  
  20.         c.add(lab2);  
  21.         pla.addItemListener(new Handler());  
  22.         bol.addItemListener(new Handler());  
  23.         frame.setBounds(0,0,200,150);  
  24.         frame.setVisible(true);  
  25.         frame.addWindowListener(new WindowAdapter()  
  26.         {  
  27.             public void windowClosing(WindowEvent e)  
  28.             {  
  29.                 System.exit(0);  
  30.             }  
  31.         });  
  32.     }  
  33.     class Handler implements ItemListener  
  34.     {  
  35.         public void itemStateChanged(ItemEvent e)  
  36.         {  
  37.             if(e.getSource()==pla)  
  38.             {  
  39.                 if(e.getStateChange()==ItemEvent.SELECTED)  
  40.                     lab1.setText("Plain is selected");  
  41.                 else  
  42.                     lab1.setText("Plain is not selected");  
  43.             }  
  44.             if(e.getSource()==bol)  
  45.             {  
  46.                 if(e.getStateChange()==ItemEvent.SELECTED)  
  47.                     lab2.setText("Bold is Selected");  
  48.                 else  
  49.                     lab2.setText("Bold is not selected");  
  50.             }  
  51.         }  
  52.     }  
  53.     public static void main(String []args)  
  54.     {  
  55.         new SwingCheckBox();  
  56.     }  
  57. }  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值