`

JAVA基础 之 GUI

    博客分类:
  • java
 
阅读更多

说明:

    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.文章反映个人愚见,如有异议欢迎讨论指正

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics