1、JLable标签组件
标签是一种可以包含文本和图片的非交互组件,其文本可以是单行文本,也可以是 HTML 文本。对于只包含文本的标签可以使用 JLabel 类,该类的主要构造方法有如下几种形式。
- JLabel():创建无图像并且标题为空字符串的 JLabel。
- JLabel(Icon image):创建具有指定图像的 JLabel。
- JLabel(String text):创建具有指定文本的 JLabel。
- JLabel(String textjcon image,int horizontalAlignment):创建具有指定文本、图像和水平对齐方式的 JLabel,horizontalAlignment 的取值有 3 个,即 JLabel.LEFT、JLabel.RIGHT 和 JLabel.CENTER。
方法名称 | 说明 |
---|---|
void setText(Stxing text) | 定义 JLabel 将要显示的单行文本 |
void setIcon(Icon image) | 定义 JLabel 将要显示的图标 |
void setIconTextGap(int iconTextGap) | 如果 JLabel 同时显示图标和文本,则此属性定义它们之间的间隔 |
void setHorizontalTextPosition(int textPosition) | 设置 JLabel 的文本相对其图像的水平位置 |
void setHorizontalAlignment(int alignment) | 设置标签内容沿 X 轴的对齐方式 |
int getText() | 返回 JLabel 所显示的文本字符串 |
Icon getIcon() | 返回 JLabel 显示的图形图像 |
Component getLabelFor() | 获得将 JLabel 添加到的组件 |
int getIconTextGap() | 返回此标签中显示的文本和图标之间的间隔量 |
int getHorizontalTextPosition() | 返回 JLabel 的文本相对其图像的水平位置 |
int getHorizontalAlignment() | 返回 JLabel 沿 X 轴的对齐方式 |
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame();
JLabel jl = new JLabel("中国心",JLabel.CENTER); // JLable组件,JLabel(String text, int horizontalAlignment对齐方式)
jf.setSize(500, 200);
jf.add(jl); // JLable组件加入到容器中
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
2、文本框组件
1)JTextField文本框-单行文本框
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("单行文本框测试");
jf.setLayout(new GridLayout(3,4,5,5));
JLabel jl1 = new JLabel("中国心",JLabel.CENTER); // JLable组件,JLabel(String text, int horizontalAlignment对齐方式)
JTextField jtf = new JTextField();
jf.setSize(500, 200);
jf.add(jl1); // JLable组件加入到容器中
jf.add(jtf);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
2)JPasswordField密码框
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("单行文本框测试");
jf.setLayout(new GridLayout(3,4,5,5));
JLabel jl1 = new JLabel("用户名:"); // JLable组件,JLabel(String text, int horizontalAlignment对齐方式)
JLabel jl2 = new JLabel("密码:");
JPasswordField jpf = new JPasswordField();
JTextField jtf = new JTextField();
jf.setSize(500, 200);
jf.add(jl1); // JLable组件加入到容器中
jf.add(jtf);
jf.add(jl2);
jf.add(jpf);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
3)JTextArea文本域-多行文本框
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("单行文本框测试");
jf.setLayout(new GridLayout(3,4,5,5));
JLabel jl1 = new JLabel("用户名:"); // JLable组件,JLabel(String text, int horizontalAlignment对齐方式)
JLabel jl2 = new JLabel("密码:");
JPasswordField jpf = new JPasswordField();
JTextField jtf = new JTextField();
JTextArea jta = new JTextArea();
jf.setSize(500, 200);
jf.add(jl1); // JLable组件加入到容器中
jf.add(jtf);
jf.add(jl2);
jf.add(jpf);
jf.add(jta);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
3、JPanel轻量级容器
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame();
JPanel jp = new JPanel();
jp.setBorder(new EmptyBorder(10,10,10,10));//设置边距
jp.setLayout(new GridLayout(3,2,10,10));
jf.add(jp); // JLable组件加入到容器中
JLabel jl1 = new JLabel("用户名:"); // JLable组件,JLabel(String text, int horizontalAlignment对齐方式)
JLabel jl2 = new JLabel("密码:");
JPasswordField jpf = new JPasswordField();
JTextField jtf = new JTextField();
JTextArea jta = new JTextArea();
JButton jb1 = new JButton("登录");
JButton jb2 = new JButton("注册");
jf.setSize(500, 200);
jp.add(jl1);
jp.add(jtf);
jp.add(jl2);
jp.add(jpf);
jp.add(jb1);
jp.add(jb2);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
4 、Swing事件处理
在swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。
实现事件的三种方式:
1.实现一个ActionListener子类,再把按钮的事件响应委托给这个子类的实例处理.
2.让界面类实现ActionListener接口,再把事件响应委托给界面类.这种方式适合于处理一些短小简单或要求内聚的事件响应.
3.用匿名类实现ActionListener接口,再把事件委托给这个匿名类的实例.这种方式是Swing事件处理的主流.
1)实现一个ActionListener子类,再把按钮的事件响应委托给这个子类的实例处理.
JButton内部有一个listenerList的链表,点击按钮就产生一个ActionEvent事件,此后内部回调用listenerList中每一个actionListener子类实例的actionPerformed方法,事件进行了响应。
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
class JButtonListener implements ActionListener{ //触发事件
public void actionPerformed(ActionEvent e) {
System.out.print(e.getActionCommand()); //返回与此动作相关的命令字符串
JOptionPane.showConfirmDialog(null, "触发状态");
}
}
public class testEven{
/**
* @param args
*/
public static void main(String[] args) {
JFrame jf = new JFrame("测试");
JButton jb = new JButton("确认");
JButtonListener jbListener = new JButtonListener(); //添加事件监听
jb.addActionListener(jbListener);
jf.add(jb);
jf.setSize(100, 200); //设置大小
jf.setLocation(100, 100); //设置位置
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
}
2 )让界面类实现ActionListener接口,再把事件响应委托给界面类.这种方式适合于处理一些短小简单或要求内聚的事件响应.
实现WindowListener接口,直接定义一个类,或者使用匿名类
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
class MyWindowListener implements WindowListener{
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口打开");
}
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口关闭");
}
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口被关闭。。。。");
}
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口最小化");
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口从最小化恢复");
}
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口被选中");
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口选中被取消");
}
}
public class testEvent2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("测试");
MyWindowListener mwl = new MyWindowListener();
jf.addWindowListener(mwl);
jf.setSize(100, 400); //设置大小
jf.setLocation(100, 100); //设置位置
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
}
3 ) 用匿名类实现ActionListener接口,再把事件委托给这个匿名类的实例.
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("测试");
//MyWindowListener mwl = new MyWindowListener();
jf.addWindowListener(new WindowListener(){
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口打开");
}
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口关闭");
}
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口被关闭。。。。");
}
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口最小化");
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口从最小化恢复");
}
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口被选中");
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
System.out.print("窗口选中被取消");
}
});
jf.setSize(100, 400); //设置大小
jf.setLocation(100, 100); //设置位置
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
5、适配器
类适配器
对象适配
缺省适配器模式
1.使用一个适配器类Adapter 实现接口 实现接口中的所有方法
适配器类中的 方法空实现
2.用户类 再来继承适配器类
3.用户类 可以进行选择性重写
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
class MyWindowListener extends WindowAdapter{ //abstract class抽象类
public void windowOpened(WindowEvent e) {
System.out.print("窗口关闭");
}
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.out.print("窗口关闭");
}
}
public class testEvent2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("测试");
MyWindowListener mwl = new MyWindowListener();
jf.addWindowListener(mwl);
jf.setSize(100, 400); //设置大小
jf.setLocation(100, 100); //设置位置
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
}
抽象类 和 接口的区别
1.使用方法
抽象类: 继承 extends
接口: 实现 implements
2.成员变量
抽象类: 变量 常量都可以有
接口: 接口中只能有常量 默认public static final 修饰
3.成员方法
抽象类: 抽象方法 成员方法都可以
接口: 只能有抽象方法(静态方法 和 默认方法)
4.构造方法
抽象类: 有构造方法
接口: 没有构造方法
类与类之间的关系:单继承 多层继承
类与接口的关系:单实现 和 多实现(用逗号隔开)
接口和 接口之间的关系
单继承 多继承(用逗号隔开)
6、综合小实例
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("测试");
jf.setLayout(null);
final JTextField jtf1 = new JTextField();
final JTextField jtf2 = new JTextField();
final JTextField jtf3 = new JTextField();
//JLabel jLabel = new JLabel("+",JLabel.CENTER);
String fuhao[] = {"+","-","*","/"};
final JComboBox jcb = new JComboBox(fuhao);
JButton jb = new JButton("=");
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String num1 = jtf1.getText();
String num2 = jtf2.getText();
String fuhao = (String) jcb.getSelectedItem();
int result = 0;
if("+".equals(fuhao)){
result = Integer.parseInt(num1)+Integer.parseInt(num2);
jtf3.setText(result+"");
}else if("-".equals(fuhao)){
result = Integer.parseInt(num1)-Integer.parseInt(num2);
jtf3.setText(result+"");
}else if("*".equals(fuhao)){
result = Integer.parseInt(num1)*Integer.parseInt(num2);
jtf3.setText(result+"");
}else{
result = Integer.parseInt(num1)/Integer.parseInt(num2);
jtf3.setText(result+"");
}
}
});
jtf1.setBounds(20, 30, 50, 25);
jcb.setBounds(80, 30, 40, 25);
jtf2.setBounds(130, 30, 50, 25);
jb.setBounds(190, 30, 50, 25);
jtf3.setBounds(250, 30, 50, 25);
jf.add(jtf1);
jf.add(jcb);
jf.add(jtf2);
jf.add(jb);
jf.add(jtf3);
jf.setSize(500, 200); //设置大小
jf.setLocation(100, 100); //设置位置
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
}
JComboBox jcb = new JComboBox(fuhao);
下拉列表由 JComboBox 类实现,常用构造方法如下。
- JComboBox():创建一个空的 JComboBox 对象。
- JComboBox(ComboBoxModel aModel):创建一个 JComboBox,其选项取自现有的 ComboBoxModel。
- JComboBox(Object[] items):创建包含指定数组中元素的 JComboBox。
JComboBox 类提供了多个成员方法用于操作下拉列表框中的项,如表 1 所示。
方法名称 | 说明 |
---|---|
void addItem(Object anObject) | 将指定的对象作为选项添加到下拉列表框中 |
void insertItemAt(Object anObject,int index) | 在下拉列表框中的指定索引处插入项 |
void removeltem(0bject anObject) | 在下拉列表框中删除指定的对象项 |
void removeItemAt(int anlndex) | 在下拉列表框中删除指定位置的对象项 |
void removeAllItems() | 从下拉列表框中删除所有项 |
int getItemCount() | 返回下拉列表框中的项数 |
Object getItemAt(int index) | 获取指定索引的列表项,索引从 0 开始 |
int getSelectedIndex() | 获取当前选择的索引 |
Object getSelectedltem() | 获取当前选择的项 |
下面分析JComboBox的事件响应。程序中使用了3个不同的事件响应函数,他们具有不同的特性。
ActionListener:它在eclipse和netBeans两个不同的IDE中表现出了不同的效果- -。在eclipse中,每当选中新节点时被激活;而在netBeans中,选择新节点时它总会被激活两次。
PopupMenuListener:它将选择节点的过程细分为3种类型:下拉菜单弹出;下拉菜单合上;下拉菜单取消。当点开下拉菜单,然后放弃选择时,则下拉菜单取消、下拉菜单合上两个事件先后被激活。
ItemListener:将节点的事件分为2种类型:SELECTED和DESELECTED。对于每种事件,均可以调用getItem()方法来获取相应节点。
扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!