Swing组件按功能分为以下几类:
1、顶层容器:JFrame,JApplet,JDialog
2、中间容器:JPanel,(滚动面板)JScrollPane,
(分割面板)JSplitPane,(工具栏)JToolBar
3、特殊容器:(分层面板)JLayeredPane,(根面板)JRootPane,(内部窗口)JInternalPane,(菜单栏)JMenuBar
(特殊容器也属于中间容器,即在用户具有特殊作用的中间容器)
4、基本组件:
组件 | 描述 |
---|---|
JLabel | 标签 |
JButton | 按钮 |
JTextArea | 文本区 |
JTextField | 文本框 |
JRadioButton | 单选按钮 |
JCheckBox | 复选框 |
JPasswordField | 密码框 |
JComboBox | 下拉列表框 |
JList | 列表 |
JProgressBar | 进度条 |
JTable | 表格 |
JTree | 树 |
在组件中显示跟电脑同步的时间
//构造方法
public aaa(){
JLable lab = new JLabel();
this.setTimer(lab);
}
private void setTimer(JLabel lab) {
//设置Timer 1000ms实现一次动作 实际是一个线程
final JLabel varTime = lab;
Timer timeAction = new Timer(2000, e -> {
long timemillis = System.currentTimeMillis();
//转换日期显示格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
varTime.setText(df.format(new Date(timemillis)));
});
timeAction.start();
}
一.窗口JFrame
JFrame frame=new JFrame("窗口标题"); //构造方法,创建窗体对象
frame.setTitle("窗口标题"); //可在创建对象中写标题,亦可以调用这个方法
frame.setVisible(true); //设置窗口可见
frame.setBounds(200,200,200,30); //设置窗口的位置(x坐标,y坐标)和窗体大小(长,宽)
frame.pack(); //自动适配组件的大小
frame.getContentPane(panel); //将面板panel(中间容器)设置为窗体内容面板
frame.setLayout(null); //采用绝对布局,通过坐标指定组件的位置,注意程序顺序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击×退出窗口
(1)只设置窗体的大小,调用方法setSize()
(2)只设置窗体的位置,调用方法setLocation()
(3)亦可以调用方法setLocationRelativeTo(null),无论窗口多大,窗体都会出现在屏幕的中心
frame.setSize(200,200); //设置坐标x和y
frame.setLocation(200,200); //设置长和宽
frame.setBounds(200,200,200,200); //设置窗体的位置和大小
frame.setLocationRelativeTo(null);
(4)获取内容面板
Container ct = frame.getContentPane(); //获取内容面板容器
ct.add(); //将组件加入内容面板中
frame.getContentPane().add(panel);
二、面板JPanel
一个窗体可以设置多个面板
JPanel panel = new JPanel(); //构造方法
panel.setBackground(Color.white); //设置面板颜色
panel.setLayout(null); //设置布局管理器
panel.setBounds(45,20,300,120); //设置面板的位置和大小
(1)可以自定义颜色,快捷键win+R,输入mspaint,点击编辑颜色,红黄绿后面的数字及是Color(R,G,U)中的三个数字,其他组件亦可以调用这个方法来自定义颜色
panel.setOpaque(true);
panel.setBackground(new Color(170,224,238)); //自定义颜色
三、标签JLabel
图片是标签的组件
JLabel lab = new JLabel("标签中字体");
//将图片添加到标签中,"src/2.jpg"是图片的地址
Icon pic1 = new ImageIcon("src/2.jpg");
lab.setIcon(pic1);
lab.setBounds(35, 35, 45, 45); //设置标签的大小
lab.setOpaque(true); //必须设置不透明,否则将不显示颜色
lab.setForeground(Color.ORANGE); //设置标签中字体颜色
lab.setBackground(new Color(170,224,238)); //设置标签背景颜色
(1)设置字体
其他组件中的字体亦可以调用setFont()方法设置字体
Font font = new Font("宋体",Font.BOLD,13);
lab.setFont(font);
四、按钮JButton
JButton bt=new JButton("按钮中字体");
bt.setBorderPainted(false); //去掉按钮边界
bt.setForeground(Color.black); //设置按钮中字体颜色
bt.setFont(font); //设置按钮中字体
bt.setOpaque(true); //必须设置不透明,否则将不显示颜色
bt.setBackground(new Color(255,236,242)); //设置按钮背景颜色
bt.setBounds(270,635,130,30); //设置按钮的位置和大小
一般点击按钮要跳转到下一个页面或者是跳出弹窗,所以会对其进行监听器注册,简单介绍一下
bt.addMouseListener(new MouseAdapter() { //注册监听器
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
frame.setVisible(false); //此页面消失
sb=new Subscribe(); //创建下一个页面的对象,Subscribe是下一个页面的类名
sb.setVisible(true); //显示下一个页面
}
});
五、文本区JTextArea
文本框与文本区差不多,只是文本框只能输入一行信息
JTextArea text = new JTextArea("文本区中文字");
text.setLineWrap(true); //使文本区中的文字自动换行
text.setWrapStyleWord(true);
text.setEditable(false); //设置不可编辑
text.setFont(font);
text.setBounds(35,90, 230, 80);
六、表格JTable
DefaultTableModel model = new DefaultTableModel();
model.addColumn("周六", new Vector<Integer>());
model.addColumn("周日", new Vector<Integer>());
model.addColumn("周一",new Vector<String>());
model.addColumn("周二",new Vector<String>());
model.addColumn("周三",new Vector<String>());
model.addColumn("周四", new Vector<String>());
model.addColumn("周五",new Vector<String>());
JTable table = new JTable(model);
//将表格放在滚动面板中
JScrollPane jp = new JScrollPane(table);
jp.setBounds(35, 190, 330, 73);
//设置水平和垂直滚动条
jp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
jp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//设置留有空白的表格行数,即30,调用方法addRow,添加列数调用方法addColumn() for(int k = 0;k < 30 ;k ++) {
model.addRow(new Vector<Integer>());}
七、下拉列表框JComboBox
Dimension dimension = new Dimension(220,30);
JComboBox<String> j = new JComboBox<>();
j.setSize(dimension);
j.addItem("按照姓名查询");
j.addItem("按照身份证号查询查询");
j.setBounds(70, 100,220, 30);
j.setBackground(Color.pink );
Dimension 是Java的一个类,封装了一个构件的高度和宽度,高度值和宽度值是整数,表明有多少个像素点
八、单选按钮JRadioButton
一组单选按钮只能有一个处于选中状态,JRadioButton通常位于一个ButtonGroup按钮组中
(1)JRadioButton rb=new JRadioButton(String text,boolean selected);
创建一个指定文本和选择状态的复选框
JRadioButton rb1=new JRadioButton("边牧");
JRadioButton rb2=new JRadioButton("金毛");
JRadioButton rb3=new JRadioButton("萨摩耶");
JRadioButton rb4=new JRadioButton("阿拉斯加犬");
ButtonGroup group=new ButtonGroup();
//添加JRadioButton到ButtonGroup中
group.add(rb1);
group.add(rb2);
group.add(rb3);
group.add(rb4);
panel.add(rb1);
panel.add(rb2);
panel.add(rb3);
panel.add(rb4);
九、复选框JCheckBox
JCheckBox jcb1 = new JCheckBox("边牧");
JCheckBox jcb2 = new JCheckBox("萨摩耶");
JCheckBox jcb3 = new JCheckBox("阿拉斯加犬");
JCheckBox jcb4 = new JCheckBox("柴犬");
panel.add(jcb1);
panel.add(jcb2);
panel.add(jcb3);
panel.add(jcb4);
(1)JCheckBox jcb4 = new JCheckBox(String text,boolean selected);
创建一个指定文本和选择状态的复选框