【CXY】JAVA基礎 之 GUI

說明:

    1.想了很久 其實真的不想寫這塊的內容,原因有三個

       1.java gui目前現狀比較被動,一提java 有多少人 第一反應是C/S結構呢?

       2.個人對這方面實踐經驗很少

       3.個人比較關注 javafx2,真心祝願oracle能用javafx2挽回GUI的失地

    2.所以這裏只做簡單的介紹和指引,出個小例子 大家嚐嚐吧

    3.java的GUI編程(Graphic User Interface,圖形用戶接口)

    4.java 通過AWT或Swing來創建GUI,開發建議使用Netbeans(有圖形化編輯界面)

    5.指引:AWT、Swing、Swt、容器、組件、佈局、事件處理

    6.不多說了 上個例子

package com.cxy.gui;

import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;

/**
 * @author cxy
 */
public class ShowComponent
{
	public static JFrame jf = new CxyJFrame("組件測試");
	
	public static JPanel jp=new JPanel();
	
	public static JLabel jl1=new JLabel("文本框演示");
	
	public static JLabel jl2=new JLabel("文本域演示");

	public static JLabel jl3=new JLabel("多選按鈕");
	
	public static JLabel jl4=new JLabel("單選按鈕");
	
	public static JLabel jl5=new JLabel("下拉框按鈕");
	
	public static JLabel jl6=new JLabel("滑塊");
	
	public static JLabel jl7=new JLabel("調節文本框");
	
	public static JButton jbu=new JButton("按鈕和事件");
	
	/**
	 * 組件測試	展示常用的組件
	 * JLabel、JTextField
	 */
	public static void main(String[] args)
	{
		jp.setLayout(null);
		
		jl1.setBounds(0, 0, 80, 20);
		JTextField jtf=new JTextField("文本框");
		jtf.setBounds(90, 0, 100, 20);
		jp.add(jl1);
		jp.add(jtf);
		
		jl2.setBounds(0, 30, 80, 20);
		JTextArea jta=new JTextArea();
		jta.setRows(5);		//設置行
		jta.setColumns(5);	//設置列
		jta.setBounds(90, 30, 150, 150);
		jp.add(jl2);
		jp.add(jta);
		
		
		//帶滾動條的文本框
		JTextArea jta1=new JTextArea("帶滾動條的文本框,長啊長啊長啊長\r\n1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n");
		JScrollPane jsp=new JScrollPane(jta1);
		jsp.setBounds(400, 30, 150, 150);
		//jsp.setBackground(Color.blue);
		jsp.setVisible(true);
		jp.add(jsp);
		
		
		//多選按鈕
		jl3.setBounds(0, 200, 80, 20);
		JCheckBox jcb=new JCheckBox("java");
		jcb.setBounds(90, 200, 50, 20);
		jcb.setSelected(true);
		JCheckBox jcb1=new JCheckBox("javascript");
		jcb1.setBounds(150, 200, 100, 20);
		JCheckBox jcb2=new JCheckBox("sql");
		jcb2.setBounds(250, 200, 60, 20);
		
		jp.add(jcb);
		jp.add(jcb1);
		jp.add(jcb2);
		jp.add(jl3);
		
		//單選按鈕
		ButtonGroup bg = new ButtonGroup();
		JRadioButton jrb=new JRadioButton("男");
		JRadioButton jrb1=new JRadioButton("女");
		
		jl4.setBounds(0, 230, 80, 20);
		jrb.setBounds(90, 230, 60, 20);
		jrb1.setBounds(150, 230, 60, 20);
		//只有將單選按鈕放到一個組內才能出現單選效果
		bg.add(jrb);
		bg.add(jrb1);
		
		jp.add(jrb);
		jp.add(jrb1);
		jp.add(jl4);
		
		
		//下拉框
		JComboBox jbox=new JComboBox();
		jbox.addItem("北京");
		jbox.addItem("天津");
		jbox.addItem("上海");
		jl5.setBounds(0, 260, 80, 20);
		jbox.setBounds(90, 260, 80, 20);
		jp.add(jl5);
		jp.add(jbox);
		
		//滑塊
		JSlider jser=new JSlider(0,100,66);
		jl6.setBounds(0, 310, 80, 50);
		jser.setBounds(90, 310, 200, 50);
		jser.setPaintLabels(true);
		jser.setPaintTicks(true);
		jser.setMajorTickSpacing(100);
		jser.setMinorTickSpacing(0);
		//jser.setPaintTrack(true);
		jp.add(jl6);
		jp.add(jser);
		System.out.println(jser.getValue());
		
		//調節組件
		JSpinner jsper =new JSpinner(new SpinnerNumberModel(5,0,10,0.5));
		jl7.setBounds(0, 380, 80, 20);
		jsper.setBounds(90, 380, 50, 20);
		jp.add(jl7);
		jp.add(jsper);
		
		
		jbu.setBounds(0, 480, 150, 60);
		jp.add(jbu);
		
		//註冊監聽事件
		ActionListener al=new MyListtener();
		jbu.addActionListener(al);
		
		//匿名內部類
		//好處:
		//1.簡化代碼
		//2.可以訪問本類的成員變量
		jbu.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				jbu.setText("已經點擊");
			}
		});
		
		jf.add(jp);
		jf.setVisible(true);
	}
}

//自定義的事件監聽器
class MyListtener implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{
		System.out.println("點擊按鈕的事件");
		
		JFrame jfe=new JFrame();
		JLabel jlab=new JLabel("點擊按鈕的事件");
		jfe.add(jlab);
		jfe.setSize(100, 100);
		jfe.setLocation(100, 100);
		jfe.setVisible(true);
	}
}

/** 創建一個屏幕居中的窗口
 */
class CxyJFrame extends JFrame
{
	public CxyJFrame(String title)
	{
		this.setTitle(title);
		int appW=800;
		int appH=600;
		this.setSize(appW, appH);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
		GraphicsDevice graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();
		DisplayMode displayMode = graphicsDevice.getDisplayMode();
		
		int pingmuW=displayMode.getWidth();
		int pingmuH=displayMode.getHeight();
		this.setLocation((pingmuW-appW)/2, (pingmuH-appH)/2);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}

聲明:

1.原創文章,轉載請標明並加本文連接。

2.更詳盡的API請參見  http://docs.oracle.com/javase/7/docs/api/

3.文章反映個人愚見,如有異議歡迎討論指正


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章