java gui程序设计_JAVA进行GUI程序设计之一

本文作为Java Swing编程系列的开篇,介绍了GUI程序设计的基本流程,并通过一个实例展示了如何创建一个包含各种组件(如JButton、JCheckBox、JRadioButton等)的简单界面。读者将了解到如何设置布局、添加事件监听以及使用不同类型的组件。
摘要由CSDN通过智能技术生成

近期正在学习Java的Swing编程,所以打算写一个关于Swing编程的系列文章,今天先写个开篇。

一般来说,使用Java进行GUI程序设计流程如下:

1. 引入Swing等相关的包;

2. 选择观感(LookAndFeel);

3. 设置顶层容器;

4. 声明和创建GUI组件;

5. 设置GUI组件

6. 添加边框;

7. 向容器中添加组件及管理布局;

8. 进行事件处理。

搬一个例子上来,先来张最终效果预览图,如下:

SwingDemo-300x239.jpg

源码:

import java.awt.Color;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.Box;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

/**

* @author Aiml

*

*/

public class SwingDemo extends SimpleFrame {

/**

*

*/

private static final long serialVersionUID = 1L;

private JPanel topPanel=new JPanel();

private Box box=Box.createVerticalBox();

private JButton button=new JButton("OK");

private JCheckBox checkBox=new JCheckBox("少数民族");

private JRadioButton

rb1=new JRadioButton("男"),

rb2=new JRadioButton("女"),

rb3=new JRadioButton("不详",true);

private ButtonGroup buttonGroup=new ButtonGroup();

private JComboBox comboBox=new JComboBox(degrees);

private JList list=new JList(educationalBackground);

private JTextArea textArea=new JTextArea();

private JLabel nameLabel=new JLabel("姓名:");

private JTextField nameText=new JTextField("张三");

private static String[] degrees={"无","学生","硕士","工程硕士","MBA","博士"};

private static String[] educationalBackground={"小学","初中","高中","大学大专","大学本科","硕士研究生","博士研究生"};

//Create a new instance of SwingDemo

public SwingDemo(int width,int height){

//设置顶层容器

super(width, height);

setTitle("演示GUI容器、组件、事件及布局");

//JPanel容器采用默认的FlowLayout布局

topPanel.add(nameLabel);

topPanel.add(nameText);

topPanel.add(new JLabel("学历"));

topPanel.add(comboBox);

//设置互斥按钮组

buttonGroup.add(rb1);

buttonGroup.add(rb2);

buttonGroup.add(rb3);

//添加边框

list.setBorder(BorderFactory.createTitledBorder("文化程度:"));

textArea.setBorder(BorderFactory.createTitledBorder("演示效果:"));

//设置背景色

textArea.setBackground(new Color(200,220,180));

//Box容器采用默认的BoxLayout布局

box.add(new JLabel("性别:"));

box.add(rb1);

box.add(rb2);

box.add(rb3);

box.add(checkBox);

//JFrame容器采用默认的BorderLayout布局

Container c=this.getContentPane();

c.add(topPanel,"North");

c.add(list,"East");

c.add(box,"West");

c.add(button,"South");

c.add(new JScrollPane(textArea),"Center");

//演示JList组件选择列表项事件

list.addListSelectionListener(new ListSelectionListener(){

@Override

public void valueChanged(ListSelectionEvent e) {

// TODO Auto-generated method stub

if(e.getValueIsAdjusting())return;

textArea.append("\n"+(String)(list.getSelectedValue()));

}

});

//演示JCheckBox组件单击事件

checkBox.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

String c=" 未选";

if(checkBox.isSelected())

c=" 已选";

textArea.append("\n"+(String)(checkBox.getText()+c));

}

});

//演示JComboBox组件选择列表项事件

comboBox.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

textArea.append("\n"+(String)(comboBox.getSelectedItem()));

}

});

//演示JButton组件点击事件

button.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

JOptionPane.showMessageDialog(null, "演示消息框。",button.getText(),JOptionPane.INFORMATION_MESSAGE);

}

});

//演示JTextField组件文本改变事件

nameText.getDocument().addDocumentListener(

new DocumentListener(){

@Override

public void changedUpdate(DocumentEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public void insertUpdate(DocumentEvent arg0) {

// TODO Auto-generated method stub

textArea.append("\n"+nameText.getText());

}

@Override

public void removeUpdate(DocumentEvent arg0) {

// TODO Auto-generated method stub

textArea.append("\n"+nameText.getText());

}

}

);

//演示JradioButton组件单击事件

rb1.addActionListener(rbListener);

rb2.addActionListener(rbListener);

rb3.addActionListener(rbListener);

}

//演示3个JradioButton组件注册的一个公用监听器

private ActionListener rbListener=new ActionListener(){

public void actionPerformed(ActionEvent e){

textArea.append("\n"+((JRadioButton)e.getSource()).getText());

}

};

public static void main(String args[]){

try{

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

}catch(Exception e){

System.out.println("程序异常:"+e.getMessage());

}

SwingDemo frame = new SwingDemo(500,400);

frame.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值