Swing程序设计
面板
- Jpanel面板
面板也是容器的一种,先把东西添加到面板内。然后把面板添加到容器内。
Jpanel p1=new Jpanel(布局类);
c.add(p1);
- JscorlPane面板
遇到较小的容器窗体要显示较大部分内容的时候,可以使用这个面板,带滚动条。他也是一个容器,但是只能放一个组件,要是需要在面板方多个组件,就需要先把组件放在Jpanel面板上,然后把Jpanel作为一个整体放在JScorlPane上。
Container c=getContentPane();//创建容器
JTxtArea ta=new JTextArea(20,50);//创建文本区域组件
JScrollPane sp=new JScrollPane(ta);//创建面版对象
c.add(sp);//添加到容器里面
- 按钮组件
==提交按钮组件,==有下列几种构造方法
public JButton();
public JButton(String text);
public JButton(Icon icon);
public JButton(String text,Icon icon);
setEnabled(false)可以设置这个按钮无效。
setIcon为这个按钮指定一个图标。
单选按钮组件
有以下常用构造方法
public JRadioButton();
public JRadioButton(Icon icon);
public JRadioButton(Icon icon,boolean selected);selexted用于设置这个选项
是否提前选定
public JRadioButton(String text);
public JRadioButton(String text.Icon icon);
public JRadioButton(String text,Icon icon,boolean selexted);
按钮组:ButtonGroup类,把按钮放进去的话同时只能选一个了。然后再把按钮组放到容器。
isselected可以读取这个是被选中
复选框组件
常用构造方法
public JCheckBox();
public JCheckBox(Icon icon,boolean check);
public JCheckBox(String text,boolean checked);
getText()方法可以得到这个按钮的名字之类; - 列表框
=下拉列表框==
常用构造方法
public JComboBox();
public JComboBox(ComboBoxModel dateModel);
public JComboBox(Objext[]arryDate);
public JComboBox(Vector vector);下拉列表框的内容可以封装在ComboBox类型,数组或vector类型中。
JComboBox模型
String arr[]= {“3”,“2”,“1”};
JLabel jl=new JLabel(“asdsss”);
JComboBox jc=new JComboBox<>();
ComboBoxModel cm=new DefaultComboBoxModel<>(arr);
jc.setModel(cm);
两个可以分别得到列表选中的索引和值
System.out.println(“num:”+jc.getSelectedIndex());
System.out.println(“内容”+jc.getSelectedItem());
列表框组件
常用构造方法
public void JList();
public void JList(Object[]listData);
public void JList(Vector listData);
public void JList(ListModel dataModel);
可以使用数组初始化列表框
也可以使用vector类型数据初始化列表框
.
Vector contents =new Vector();
JList ji=new JList(contents);
contents.add(“1”);
contents.add(“2”);
contents.add(“3”);
也可以使用模型
String arr[]= {“3”,“2”,“1”,“sd”,“asj”,“shxb”,“sbxj”,“agsz”,“shxn”};
JListjc=new JList<>();
DefaultListModel mo=new DefaultListModel<>();
for(String tmp:arr) {//向列表载入数据
mo.addElement(tmp);
}
好处是可以再添加其他的
可以设置选择的样子
jc.setSelectionModel(ListSelectionModel.SINGLE_SELECTION);只能单选
SINGLE_INTERVAL_SELECTION;只能连着选
MULTIPE_INTERVAL_SELECTION;随便选
用事件监听器得到选中的内容
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获得选中的元素
java.util.List<String> value=jc.getSelectedValuesList();
for(String tmp:value) {
System.out.println(tmp);
}
}
});
- 文本组件
文本框组件
构造方法
public JTextField();
public JTextField(String arr);
public JTextField(int fieldwidth);
public JTextField(String arr,int fieldwidth);
public JTextField(Document docModel,String arr,int fieldwidth);
密码框组件
和文本框类似
public JPasswordField();
public JPasswordField(String arr);
public JPasswordField(int fieldwidth);
public JPasswordField(String arr,int fieldwidth);
public JPasswordField(Document docModel,String arr,int fieldwidth);
然后可以在程序中定义密码框的回显字符
JPasswordField jp=new JPasswordField();
jp.setEchoChar(’#’);
文本域组件
public JTextArea();
public JTextArea(String arr);
public JTextArea(int rows,int colums);
public JTextArea(Document doc);
public JTextArea(Document doc,String Text,int rows,int colums);
setLineWrap()方法可以设置文本域是否自动换行
6.事件监听器
动作事件监听器
事件名称 | 事件源 | 监听接口 | 添加或者删除相应类型监听器的方法 |
---|---|---|---|
ActionEvent | JButton,JList,JTextField等 | ActionListener | addActionListener(),removeActionListioner() |
焦点事件监听器
事件名称 | 事件源 | 监听接口 | 添加或者删除相应类型监听器的方法 |
---|---|---|---|
FocusEvent | Component以及派生类 | FocusListener | addFocusListener(),removeFocusListioner() |
在添加监听器的时候,要实现FocusListener接口,这个接口中定义了两个方法,分别为focusLost()和focusGained()方法,前者是组件失去焦点的时候调用的,后者是得到焦点的时候。
第十八章 多线程
1. 实现线程的方法
- 继承Thread类
继承这个类之后,把需要执行的线程放在run方法内,用start()方法执行 - 实现Runnable接口,
1, 建立runnable对象
2,使用参数为runnable对象的构造方法创建thread实例,
3,调用start() 方法启动线程
2,线程的生命周期
- notify()方法可以将线程唤醒,notifyAll()唤醒所有线程。
3, 线程的操作方法
- 线程的休眠
用Thread.sleep(1000)单位是毫秒 - 线程的加入
用Thread.join();方法,就是停止当前线程,等待加入的线程执行完毕 - 线程的中断
再run()使用无限循环,然后用一个布尔值结束循环。
注意要抛出异常
4,线程的优先级
setPriority()方法,参数为1-10,不然会异常,有三个常数
t.MIN_PRIORITY;表示1
t.MAX_PRIORITY;表示10
t.NORM_PRIORITY;表示5
5,线程同步
- 同步块
用synchronized修饰代码块 - 用上边那个修饰方法
- 这样子程序都按照合适的顺序
相当于排队
第十四章 集合类
1.Collection接口
1.要想取出集合中的数据,要使用迭代器
package com.lzw;
import java.util.*;
public class Muster {
// 创建类Muster
public static void main(String args[]) {
Collection<String> list = new ArrayList<>(); // 实例化集合类对象
list.add("a"); // 向集合添加数据
list.add("b");
list.add("c");
Iterator<String> it = list.iterator(); // 创建迭代器
while (it.hasNext()) {
// 判断是否有下一个元素
String str = (String) it.next(