Swing程序设计(四)——组件

Swing常用组件

  • 按钮
    1.JButton组件(提交按钮)
    构造方法:
    JButton() :不带文本和图标
    JButton(String text) :带文本
    JButton(Icon icon) :带图标
    JButton(String text,Icon icon):带文本和图标

    常用方法:
    1.setText() 设置文本
    2.setEnabled(false|true) 设置按钮是否可用
    3.setBackground(Color.YELLOW) 设置按钮背景颜色
    4.setBorderPainted(true|false) 设置是否显示按钮边框
    5.setBorder(边框对象) 设置按钮边框类型:一般边框对象常采用BorderFactory类,该类有设置边框的很多方法,如setBorder(BorderFactory.createLineBorder(Color.RED)),为线边框
    6.setIcon(Icon icon) 为按钮添加图片
    注:Icon icon = new ImageIcon(相对于项目工作目录的路径,如:”src/…“),具体介绍有发过相应的文章,请读者自行去查。
    7.setToolTipText(String a) 为按钮添加鼠标悬停提示
    8.addActionListener(监听器对象) 为按钮注册点击事件监听

    2.JRadioButton组件(单选按钮)
    构造方法:
    JRadioButton() 不带文本、图标、默认不被选中的单选按钮
    JRadioButton(Icon icon) 带图标的单选按钮
    JRadioButton(Icon icon,boolean selected) 带图标、默认是否被选中的单选按钮
    JRadioButton(String text) 带文本、默认不被选中的单选按钮
    JRadioButton(String text,Icon icon) 带文本、图标、默认不被选中的单选按钮
    JRadioButton(String text,Icon icon,boolean selected) 带文本、图标、默认是否被选中的单选按钮

    常用方法:
    1.setSelected(true|false) 设置是否默认被选中
    2.getText() 获取文本
    3.isSelected() 判断是否被选中

    拓展:
    ButtonGroup类(按钮组)
    add()方法可将单选按钮加入组中,实现只能单选功能

    创建单选方法:
    JRadioButton b1 = new JRadioButton();
    JRadioButton b2 = new JRadioButton();
    ButtonGroup group = new ButtonGroup();
    group.add(b1);
    group.add(b2);
    Container.add(b1)
    Container.add(b2)

    3.JCheckBox组件(复选按钮)
    常用构造方法:
    JCheckBox()
    JCheckBox(Icon icon,boolean checked)
    JCheckBox(String text,boolean checked)

    常用方法:
    1.setSelected(true|false) 设置是否默认被选中
    2.getText() 获取文本
    3.isSelected() 判断是否被选中

  • 列表组件

    1.JComboBox(下拉列表框组件)
    常用构造方法:
    JComboBox()
    JComboBox(ComboBoxModel dataModel)
    JComboBox(Object[] arrayData)
    JComboBox(Vector vector)

    常用方法:
    addItem() 向下拉列表添加数据
    setBounds(a,b,x,y) 设置坐标和大小(null布局)
    setModel(ComboBoxModel cm) 向列表中添加数据模型
    getSelectedIndex() 获取选中的索引
    getSelectedItem() 获取选中的值
    setEditable(true|false) 设置是否可以编辑(编辑的内容索引值为-1,因为是模型外的值)

    扫描二维码关注公众号,回复: 8686500 查看本文章

    常用创建下拉列表框方式:
    1.在程序中使用addItem()创建列表
    JComboBox< String> comboBox = new JComboBox<>(); //列表都为String类型
    comboBox.addItem(“身份证”);
    comboBox.addItem(“学生证”);
    comboBox.addItem(“残疾证”);
    c.add(comboBox)
    //JComboBox<类型> comboBox = new JComboBox<>(),<类型>称为“泛型”,为下拉列表中要保存的数据类型,为JDK7的新特性

    2.利用ComboBoxModel接口(下拉列表模型)建立列表。

    下拉列表中的内容可以被封装在ComboBoxModel类型、数组或者Vector类型中,此处介绍ComboBoxModel模型。

    ComboBoxModel为一个接口,我们可以定义一个实现他的接口类,然后初始化JComboBox对象时向上转型为ComboBoxModel接口类型。他必须实现下面两种方法:
    (1).public void setSelectedItem(Object item) 用于设置下拉列表框中的选中项
    (2).public Object getSelectedItem() 用于返回下拉列表框中的选中项
    除了实现该接口也可继承AbstractListModel类,该类有操作下拉列表框的重要方法:
    (1)getSize() 返回列表的长度
    (2)getElementAt(int index) 返回指定索引处的值

package com.lzw;

import java.awt.*;

import javax.swing.*;

public class JComboBoxModelTest extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JComboBox<String> jc = new JComboBox<>(new MyComboBox());
	JLabel jl = new JLabel("请选择证件:");
	
	public JComboBoxModelTest() {
		setSize(new Dimension(160, 180));
		setVisible(true);
		setTitle("在窗口中设置下拉列表框");
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		Container cp = getContentPane();
		cp.setLayout(new FlowLayout());
		cp.add(jl);
		cp.add(jc);
	}
	
	public static void main(String[] args) {
		new JComboBoxModelTest();
	}
}

class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String> {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String selecteditem = null;
	String[] test = { "身份证", "军人证", "学生证", "工作证" };
	
	public String getElementAt(int index) {
		return test[index];
	}
	
	public int getSize() {
		return test.length;
	}
	
	public void setSelectedItem(Object item) {
		selecteditem = (String) item;
	}
	
	public Object getSelectedItem() {
		return selecteditem;
	}
	
	public int getIndex() {
		for (int i = 0; i < test.length; i++) {
			if (test[i].equals(getSelectedItem()))
				return i;
		}
		return 0;
	}
}

除了上面这种其实有一个类已经实现了该接口那就是

DeFaultComboBoxModel类

常用构造方法:
DefaultComboBoxModel(E[] items) //E为这个模型的元素的类型
DefaultComboBoxModel(Vector v)

用法如下:
JComboBox< String> comboBox = new JComboBox<>();
String items[] = {“身份证”,“学生证”,“军人证”};
ComboBoxModel cm = new DeFaultComboBoxModel<>(items) //列表内容封装,创建下拉列表模型。
comboBox.setModel(cm); 向列表中添加数据模型

3.将内容封装在数组中创建(JComboBox(Object[] arrayData))
用法如下:
String items[] = {“身份证”,“学生证”,“军人证”};
JComboBox< String> cm = new JComboBox<>(items);

2.JList(列表框组件)
常用构造方法:
public JList() 可以在初始化列表框后使用setListData()方法对列表框进行设置
public JList(Object[] listData)
public JList(Vector listData)
public JList(ListModel dataModel)

常用方法:
1.public void setModel(ListModel model) 列表框载入数据模型
2.public void setListData(E[] listData) 对列表框进行设置,构造一个只读ListModel从项目的数组,并调用setModel这种模式。
3.public void setListData(Vector<? extends E> listData) 对列表框进行设置,构造一个只读ListModel从Vector并调用setModel这种模式。
4.public void setSelectionMode(int selectionMode) 设置列表的选择模式。
selectionMode取值如下:
(1)ListSelectionModel.SINGLE_SELECTION :一次只能选择一个列表索引。
(2)ListSelectionModel.SINGLE_INTERVAL_SELECTION : 一次只能选择一个连续的元素。
(3)ListSelectionModel.MULTIPLE_INTERVAL_SELECTION : 在这种模式下,对什么可以选择没有限制。 此模式是默认模式。
5.public List< E> getSelectedValuesList() 根据列表中的索引,按照增加的顺序返回所有选定项目的列表。

创建列表框方式:
1.使用数组作为初始化列表框的参数:

String[] contents = {"1","2","3"};
JList l = new JList(contents);
Container.add(l);

2.使用Vector类型数据作为初始化列表框参数

Vector contents = new Vector();
contents.add("1")
contents.add("2")
contents.add("3")
JList l = new JList(contents)
Container.add(l);

3.使用ListModel模型
ListModel是一个接口,用户可以自定义一个类继承实现该接口的抽象类AbstractListModel,这个类提供了重要方法:
(1)getSize() 返回列表的长度
(2)getElementAt(int index) 返回指定索引处的值

import java.awt.*;
import javax.swing.*;
public class JListTest extends JFrame {
	private static final long serialVersionUID = 1L;
	public JListTest() {
		Container cp = getContentPane();
		cp.setLayout(null);
		//JList<String> jl = new JList<>(new MyListModel());
		JList<String> jl = new JList<>();
		jl.setModel(new MyListModel());
		JScrollPane js = new JScrollPane(jl);
		js.setBounds(10, 10, 100, 100);
		cp.add(js);
		setTitle("在这个窗体中使用了列表框");
		setSize(200, 150);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	
	public static void main(String args[]) {
		new JListTest();
	}
}

class MyListModel extends AbstractListModel<String> {
	private static final long serialVersionUID = 1L;
	private String[] contents = { "列表1", "列表2", "列表3", "列表4", "列表5", "列表6" };
	public String getElementAt(int x) {   //重写方法
		if (x < contents.length)
			return contents[x++];
		else
			return null;
	}
	public int getSize() {   //重写方法
		return contents.length;
	}
}

除此以外还可以使用DefaultListModel类,该类拓展了AbstractListModel类。
DefaultListModel(列表框模型)类:

构造方法:
DefaultListModel() 唯一一个构造函数

常用方法:
1.addElement(E element) 将组件添加到此列表末尾(向数据模型添加元素)

使用方法:

String[] contents = { "列表1", "列表2", "列表3", "列表4", "列表5", "列表6" };
DefaultListModel< String> items = new DefaultListModel<>(); 
for(String a : contents){
	items.addElement(a);
}
JList< String> l = new JList<>(items);
Container.add(l);
  • 文本组件
    1.JTextField(文本框组件)
    用来显示或编辑一个单行文本
    构造方法:
    public JTextField()
    public JTextField(String text)
    public JTextField(int columns)
    public JTextField(String text,int columns)
    public JTextField(Document doc,String text,int columns) 构造一个新的JTextField ,它使用给定的文本存储模型和给定的列数。

    常用方法:
    1.public int getColumns() 返回此TextField中的列数。
    2.setColumns(int columns) 设置此 TextField中的列数,然后使布局无效。
    3.setText() 设置文本框内容
    4.getText() 获取文本框文本值
    5.public void setFont(Font f) 设置当前字体。Font的构造方法如下:
    Font(String name, int style, int size) 从指定的名称,样式和点大小创建一个新的 Font 。
    如:setFont(new Font(“微软雅黑”,Font.PLAIN,20))
    6.requestFocus() 获取焦点,即获取光标

    注:当JTextField注册了ActionListener监听器时,当按下enter键触发事件actionPerformed方法。

    2.JPasswordField(密码框组件)
    构造方法:
    public JPasswordField() 构造新的 JPasswordField ,默认文档为 null起始文本字符串和0列宽。
    public JPasswordField(String text)
    public JPasswordField(int columns)
    public JPasswordField(String text,int columns)
    public JPasswordField(Document doc,String txt, int columns)

    常用方法:
    1.setColumns(int columns) 设置此 JPasswordField中的列数
    2.public void setFont(Font f) 设置当前字体。Font的构造方法如下:
    Font(String name, int style, int size) 从指定的名称,样式和点大小创建一个新的 Font 。
    如:setFont(new Font(“微软雅黑”,Font.PLAIN,20))
    3.requestFocus() 获取焦点,即获取光标
    4.public void setEchoChar(char c) 设置回显字符
    5.public char[] getPassword() 返回密码框中的字符,可以用以下方式转换为字符串:String str = new String(Char[] a)

    注意:当JPasswordField注册了ActionListener监听器时,当按下enter键触发事件actionPerformed方法。

    3.JTextArea(文本域组件)
    构造方法:
    public JTextArea()
    public JTextArea(String text)
    public JTextArea(int rows,int columns)
    public JTextArea(String text, int rows,int columns)
    public JTextArea(Document doc) 使用给定的文档模型构造一个新的JTextArea,其他所有参数默认为(null,0,0)。
    public JTextArea(Document doc, String text,int rows,int columns)

    常用方法:
    1.public void setFont(Font f) 设置当前字体。
    2.setText() 设置文本域内容
    3.public void setRows(int rows) 设置此TextArea的行数。
    4.public void setColumns(int columns) 设置此TextArea的列数。
    5.public void append(String str) 将给定的文本附加到文档的末尾。
    6.public void insert(String str,int pos) 在指定的位置插入指定的文本。
    7.public void setLineWrap(boolean wrap) 设置文本区域的换行策略。 如果设置为true,则如果它们太长而不适合分配的宽度,则这些行将被包装,即自动换行。 如果设置为false,这些行将始终被展开。默认情况下,此属性为false。

发布了10 篇原创文章 · 获赞 2 · 访问量 71

猜你喜欢

转载自blog.csdn.net/qq_42188457/article/details/104022199