java学习笔记14——Java Swing

来源:互联网 发布:ios ar源码 编辑:程序博客网 时间:2024/05/01 17:36
前面提过(在该系列笔记6中提过),"AWT(Abstract Window Tool,抽象窗口工具箱)是JAVA中面向图形编程的基础,其中,AWT是JAVA 1.0提出的,其后,SWING是在JAVA1.2提出的新的界面库,但是SWING并不是说取代了AWT,在JAVA1.1中,AWT事件处理模型有了根本改变。而SWING仍然使用的是Java1.1的事件处理模型。",Java Swing是一套功能强大、结构完整的用户图形界面工具包 。
一、Swing概述
1  Swing的历史 
2  Swing组件 
(1)Swing组件几乎都是轻量组件,所以轻量组件最终必须包含在一个重量容器中 
由于轻量组件不在本地不透明的窗口中绘制,因此,它们可以有透明的背景。透明的背景使显示的轻量组件可以是非矩形的 
(2) Swing包含250多个类,是组件和支持类的集合 ,有些是UI组件,有些是支持类 
见书P270
3  Swing小应用程序 

实例见例14。1

import javax.swing.*;//注意:是javaximport java.awt.*;import java.awt.event.*;public class TestSWING extends JFrame{public TestSWING(){super("An Application using Swing");Container contentPane=getContentPane();Icon icon=new ImageIcon("swing.gif","An advanced GIF of Duke on a swing");JLabel label=new JLabel("Swing!",icon,SwingConstants.CENTER);contentPane.add(label,BorderLayout.CENTER);}public static void main(String args[]){final JFrame f=new TestSWING();f.setBounds(100,100,300,250);f.setVisible(true);f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);f.addWindowListener(new WindowAdapter(){public void windowClosed(WindowEvent e){System.exit(0);}});}}

框架倒还不涉及另外去下包,不像JMF

4  Swing应用程序 
实例见例14。2
二、基本Swing组件
1  JComponent组件
JComponent类是所有Swing轻量组件的基类 
JComponent类包含的常用方法如下:
1)getX()、getY():返回组件所在的位置。
2)getHeight()、getWidth():返回组件的高度和宽度。
3)setBorder(Border border):设置组件的边框。
4)setFont(Font font):设置字体。
5)setMaximumSize(Dimension maximumSize)、setMinimumSize(Dimension Minimum-Size):设置最大、最小尺寸。


2  JLabel组件 
标签用JLabel类表示 
JLabel的构造方法有以下6种:
1)JLabel():创建一个没有图标,标题为空字符串的标签。
2)JLabel(Icon image):创建一个包含特定图标的标签。
3)JLabel(Icon image, int horizontalAlignment):创建包含特定图标、以特定方式对齐的标签。
4)JLabel(String text):创建包含特定文本的标签。
5)JLabel(String text, int horizontalAlignment):创建包含特定文本、以特定方式对齐的标签。
6)JLabel(String text, Icon image, int horizontalAlignment):创建包含特定文本和图标、以特定方式对齐的标签。


3  JButton组件 
JButton的构造方法有:
1)JButton():创建一个“空”按钮。
2)JButton(Action a):使用一个动作创建按钮。
3)JButton(Icon image)、JButton(String text)、JButton(String text, Icon image):使用图标或\和文本创建按钮。


常用方法。
1)addActionListener(ActionListener l)、addChangeListener(ChangeListener l)、addItemListener(ItemListener l):添加相应的监听器。
2)doClick()、doClick(int pressTime):程序方式单击按钮。
3)setRolloverIcon(Icon image):设置鼠标悬停时的图标。
4)getModel():得到按钮的状态。
见例14。4 例14。5
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;//javax中,javax.swing.event.*public class TestSwing3 extends JApplet{JButton button=new JButton("button");/*J*/Icon icon=new ImageIcon("icon.gif");public TestSwing3(){Container contentPane=getContentPane();button.setRolloverIcon(new ImageIcon("punch.gif"));button.setIcon(new ImageIcon("open_hand.gif"));contentPane.setLayout(new FlowLayout());contentPane.add(button);button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.out.println("action!");}});button.addChangeListener(new ChangeListener(){public void stateChanged(ChangeEvent e){System.out.println(getButtonState());}});}private String getButtonState(){ButtonModel model=button.getModel();//button的getModel()方法String state="Button State:";state+=model.isSelected() ? "selected":"deselected";state += model.isPressed() ? ", pressed" : ", not pressed";state += model.isArmed() ? ", armed" : ", disarmed";state += model.isRollover() ? ", rollover" : ", not rollover";//java中也有 :?运算符return state;}}

<html><h2>This is a JApplet for javax.Swing.</h2><applet code="TestSwing3" width="450" height="450"></applet></html>

4  JToggleButton组件、JCheckBox组件和JRadioButton组件 
见例14。6
5  菜单和工具条
Swing提供菜单组件(即菜单条中的菜单和弹出式菜单中的菜单)和菜单项组件(包括复选框和单选按钮菜单项) 
Swing还提供一个工具条组件,根据工具条的方向,工具条组件包含一行按钮或一列按钮 

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TestSwing4 extends JApplet {public TestSwing4() {Container contentPane = getContentPane();ButtonGroup group = new ButtonGroup();JToggleButton[] buttons = new JToggleButton[] {new JToggleButton(new ImageIcon("ballot_box.gif")),new JToggleButton(new ImageIcon("palette.gif")),new JToggleButton(new ImageIcon("light_bulb1.gif")),new JToggleButton(new ImageIcon("dining.gif")),new JToggleButton(new ImageIcon("scissors.gif")),new JToggleButton(new ImageIcon("tricycle.gif")),};//赋值初始化Box box = Box.createVerticalBox();//Box??for(int i=0; i < buttons.length; ++i) {group.add(buttons[i]);box.add(Box.createVerticalStrut(5));box.add(buttons[i]);}box.add(Box.createVerticalStrut(5));contentPane.add(box);}}


(1)JMenuBar组件  JMenuBar是Swing中的菜单条组件,它是菜单的容器,可以通过add方法将JMenu实例添加进去 
JMenuBar的常用方法有:
1)add(JMenu c):添加菜单。
2)getMenuCount():得到菜单条中的菜单个数。
3)getMenu(int index):得到指定序号的菜单。
(2)JMenu组件  JMenu是菜单组件,用来容纳各种菜单项组件 
JMenu的构造方法有:
1)JMenu():创建一个空菜单。
2)JMenu(String s):创建菜单并指定菜单名称。 
JMenu的常用方法有:
1)add(Component c):添加一个组件对象。
2)add(JMenuItem menuItem):添加一个菜单项。
3)addMenuListener(MenuListener l):为菜单事件添加监听器。
4)addSeparator():添加菜单分割线。
5)insert(JMenuItem mi, int pos):在指定位置添加菜单项。
(3)JMenuItem组件、JCheckBoxMenuItem组件和JRadioButtonMenuItem组件  这三个组件都是菜单项组件 

见例14。7 

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TestSwing5 extends JApplet {public void init() {Container contentPane = getContentPane();Icon newIcon = new ImageIcon("new.gif", "Create a new document");Icon openIcon = new ImageIcon("open.gif","Open an existing document");JMenuBar mb = new JMenuBar();JMenu fileMenu = new JMenu("File");JMenuItem newItem = new JMenuItem(newIcon);JMenuItem openItem = new JMenuItem("Open ...", openIcon);JMenuItem saveItem = new JMenuItem("Save");JMenuItem saveAsItem = new JMenuItem("Save As ...");JMenuItem exitItem = new JMenuItem("Exit", 'x');fileMenu.add(newItem);fileMenu.add(openItem);fileMenu.add(saveItem);fileMenu.add(saveAsItem);fileMenu.addSeparator();fileMenu.add(exitItem);MenuItemListener listener = new MenuItemListener(this);//自定义MenuItem的ListenernewItem.addActionListener(listener);openItem.addActionListener(listener);saveItem.addActionListener(listener);saveAsItem.addActionListener(listener);exitItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});mb.add(fileMenu);setJMenuBar(mb);}}class MenuItemListener implements ActionListener {private JApplet applet;public MenuItemListener(JApplet applet) {this.applet = applet;//this}public void actionPerformed(ActionEvent e) {JMenuItem item = (JMenuItem)e.getSource();ImageIcon icon = (ImageIcon)item.getIcon();if(icon != null)System.out.println(icon.getDescription());elseSystem.out.println(item.getText());}}


(4)JToolBar组件  工具条是一种常用组件的容器 
JToolBar的构造方法有:
JToolBar()
JToolBar(int orientation)
JToolBar(String name)
JToolBar(String name, int orientation),其中,name指定工具条的名称,orientation指定工具条的停靠位置。 
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TestSwing6 extends JApplet {public TestSwing6() {Container contentPane = getContentPane();JToolBar tb = new JToolBar();JComboBox fontCombo = new JComboBox(),fontSizeCombo = new JComboBox();//逗号表达式,同一时刻建立多个组合框JButton newButton = new JButton(new ImageIcon("new.gif")),openButton = new JButton(new ImageIcon("open.gif")),cutButton = new JButton(new ImageIcon("cut.gif")),copyButton = new JButton(new ImageIcon("copy.gif")),pasteButton = new JButton(new ImageIcon("paste.gif"));fontCombo.addItem("Helvetica");//字体组合框添加项fontCombo.addItem("Palatino");fontCombo.addItem("Courier");fontCombo.addItem("Times");fontCombo.addItem("Times-Roman");fontSizeCombo.addItem("10");fontSizeCombo.addItem("12");fontSizeCombo.addItem("14");fontSizeCombo.addItem("16");fontSizeCombo.addItem("18");tb.add(newButton);tb.add(openButton);tb.addSeparator();tb.add(cutButton);tb.add(copyButton);tb.add(pasteButton);tb.addSeparator();tb.add(fontCombo);tb.add(fontSizeCombo);contentPane.setLayout(new BorderLayout());contentPane.add(tb, BorderLayout.NORTH);}}



三、高级Swing组件
1  JProgressBar组件 
2  JSlider组件 
3  JScrollBar组件 
4  JTextCompont组件 
5  JTextField组件 
6  JTextArea组件 
原创粉丝点击