JAva学習ノート14——Java Swing

9890 ワード

前に述べた(同シリーズノート6で述べた),"
AWT(Abstract Window Tool、抽象ウィンドウツールボックス)は、JAVAにおけるグラフィックプログラミング向けの基礎であり、AWTはJAVA 1.0によって提案され、その後、SWINGはJAVA 1.2において提案された新しいインタフェースライブラリであるが、SWINGはAWTに取って代わるものではなく、JAVA 1.1においてAWTイベント処理モードが根本的に変更された.SWINGはJava 1.1のイベント処理モデルを使用している.Java Swingは機能が強く、構造が完全なユーザーグラフィックインタフェースツールパッケージです.
一、Swingの概要
1  Swingの歴史 
2  Swingコンポーネント 
(1)Swingコンポーネントはほとんど軽量コンポーネントであるため、軽量コンポーネントは最終的に1つの重量容器に含まなければならない 
軽量コンポーネントは、ローカルで不透明なウィンドウに描画されないため、透明なバックグラウンドを持つことができます.透明なバックグラウンドは、表示される軽量コンポーネントを非矩形にすることができます. 
(2)Swingは250以上のクラスを含み,コンポーネントとサポートクラスの集合であり,UIコンポーネント,サポートクラスである. 
本P 270参照
3  Swingウィジェット 
例を例14に示す.1
import javax.swing.*;//  : javax
import 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(Actiona):アクション作成ボタンを使用します.
3)JButton(Icon image)、JButton(String text)、JButton(String text,Icon image):アイコンまたはおよびテキストを使用してボタンを作成します.
一般的な方法.
1)addActionListener(ActionListener l)、addChangeListener(ChangeListener)、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;
	}
}

This is a JApplet for javax.Swing.


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(Componentc):コンポーネントオブジェクトを します.
2)add(JMenuItem menuItem):メニュー を します.
3)addMenuListener(MenuListener l):メニューイベントにListenerを します.
4)addSeparator():メニュー を します.
5)insert(JMenuItem mi,int pos): した にメニュー を します.
(3)JMenuItemコンポーネント、JCheckBox MenuItemコンポーネント、JRadioButtonMenuItemコンポーネント この3つのコンポーネントはすべてメニュー コンポーネントです 
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 Listener

		newItem.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());
		else
			System.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  JTextComponentコンポーネント 
5  JTextFieldコンポーネント 
6  JTextAreaコンポーネント