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