前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习之路:32.史上最全的Swing常用组件

java学习之路:32.史上最全的Swing常用组件

作者头像
花狗Fdog
发布2020-10-28 11:03:17
6.8K0
发布2020-10-28 11:03:17
举报
文章被收录于专栏:花狗在Qt

一.前言

首先应该明白,用java创建一个窗体程序包括下面几步:

1.实例化JFrame对象,也就是创建一个窗体。 2.获取一个容器。 3.创建组件。 4.向容器添加组件。 5.使窗体可视。 6.设置窗体大小。 7.调用上面方法。

应该有这样的概念,Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器,通常,这个容器用来包含和显示组件。

类的继承图
类的继承图

可以看到JFrame继承于Container类。

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
public class zujian extends JFrame{
public  void windows() {
 //实例化JFrame对象,就是创建一个窗体
 JFrame jf =new JFrame("花狗");//设置窗体标题
 //获取容器
 Container c =jf.getContentPane();
 
 
 //下面所有组件的创建都将在这里编写,所有下面只列出组件创建的代码。
 //如果有其他改动,我会列出。
 
 
 jf.setVisible(true);//设置窗体可视
 jf.setSize(300,300);//设置窗体大小
 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式
}
 public static void main(String[] args) {
    new zujian().windows();
 }
}
在这里插入图片描述
在这里插入图片描述

这是基础代码,创建一个空白窗体,为了文章不臃肿,我就只列出一次。关于java文档,可自行下载: java文档

二.Swing常用组件

组件名称

定义

JButton

代表Swing按钮,按钮可以带一些图片或文字

JCheckBox

代表Swing中的复选框组件

JComboBox

代表Swing下拉列表框,可以在下拉显示区域显示多个选项

JFrame

代表Swing的框架类

JDialog

代表Swing版本的对话框

JLabel

代表Swing中的标签组件

JRadioButton

代表Swing单选按钮

JList

代表能够在用户界面中显示一系列条目的组件

JTextField

代表文本框

JPasswordField

代表密码框

JTextArea

代表Swing中的文本区域

JOptionPane

代表Swing中的一些对话框

每个组件都有很多种用法,建议查看java文档。

三.JButton | 代表Swing按钮

JButton类拥有5种构造方法:

构造方法

解释

JButton()

创建没有设置文本或图标的按钮

JButton(String text)

创建带有文本的按钮

JButton(Icon icon)

创建带有图标的按钮

JButton(String text, Icon icon)

创建带有初始文本和图标的按钮

JButton(Action a)

创建一个按钮,其属性从所提供的Action中获取

1.创建没有设置文本或图标的按钮

代码语言:javascript
复制
 JButton jb=new JButton();
 c.add(jb);
在这里插入图片描述
在这里插入图片描述

可以看到创建的按钮涉及整个窗体,这是为什么呢,窗体默认使用边界布局器,创建的组件会覆盖整个窗体,我们只需要取消边界布局,改用绝对布局:

代码语言:javascript
复制
 jf.setLayout(null);  //告诉窗体取消边界布局
 JButton jb=new JButton();
 jb.setBounds(10,30,80,30);//使用绝对布局,自定义按钮大小
 c.add(jb);
在这里插入图片描述
在这里插入图片描述

如果这里有疑问可查看: 布局管理器

2.创建带有文本的按钮

代码语言:javascript
复制
 JButton jb=new JButton("我是按钮");
 jb.setBounds(50,50,100,100);//使用绝对布局,自定义按钮大小
 c.add(jb);
 jf.setVisible(true);
 jf.setSize(300,300);
在这里插入图片描述
在这里插入图片描述

3.创建带有图标的按钮

想使用带有图标的按钮,需要使用Icon接口:Icon

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
public class DrawIcon implements Icon {
 private int width;  //设置图标的宽
 private int height; //设置图标的长
 public int getIconHeight() {
  return this.height;
 }
 public int getIconWidth() {
  return this.width;
 }
 public DrawIcon(int width,int height) {
  this.width=width;
  this.height=height;
 }
 public void paintIcon(Component arg0,Graphics arg1,int x,int y) {
  arg1.fillOval(x, y, width, height);//绘制一个圆形
 }
 public static void main(String[] args) {
    DrawIcon icon =new DrawIcon(15,15);
    JButton jl=new JButton(icon);
    JFrame jf =new JFrame("花狗");
 jf.setLayout(null);  //告诉窗体取消边界布局
 jl.setBounds(50,50,100,100);//使用绝对布局,自定义按钮大小
    Container c=jf.getContentPane();
    c.add(jl);
    jf.setVisible(true);
    jf.setSize(300,300);
 }
}
在这里插入图片描述
在这里插入图片描述

也可以使用图片作为图标来使用:

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
import java.net.URL; 
public class myicon extends JFrame{
 public myicon() {
 Container container =getContentPane();
 //创建一个标签
 JButton jb =new JButton();
 setLayout(null);  //告诉窗体取消边界布局
 jb.setBounds(50,50,100,100);//使用绝对布局,自定义按钮大小
 //获取图片所在的URL
 URL url = myicon.class.getResource("/wo.PNG");
 Icon icon =new ImageIcon(url);
 jb.setIcon(icon);
 //有两种添加方法,一种就是在创建的时候直接添加图标,第二种就是在后续使用方法添加
 jb.setHorizontalAlignment(SwingConstants.CENTER);
 jb.setOpaque(true);
 container.add(jb);
 setSize(400,300);
 setVisible(true);
 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 }
 public static void main(String[] args) {
    new myicon();
 }
}
在这里插入图片描述
在这里插入图片描述

创建文本加图标的按钮,这里就不在赘述,至于最后一个构造方法使用Action接口的使用方法,这里不在讲解。


四.JCheckBox| 代表Swing中的复选框组件

JCheckBox类有8中构造方法:

构造方法

解释

JCheckBox()

创建一个最初未选中的复选框按钮,该按钮没有文本,也没有图标。

JCheckBox(Icon icon)

使用图标创建一个最初未选中的复选框。

JCheckBox(Icon icon, boolean selected)

创建带有图标的复选框,并指定是否最初选中它。

JCheckBox(String text)

用文本创建一个最初未选中的复选框。

JCheckBox(String text, boolean selected)

创建带有文本的复选框,并指定是否最初选中它。

JCheckBox(String text, Icon icon)

用指定的文本和图标创建一个最初未选中的复选框。

JCheckBox(String text, Icon icon, boolean selected)

创建带有文本和图标的复选框,并指定是否最初选中它。

JCheckBox(Action a)

创建一个复选框,其中的属性取自提供的操作。

1.创建一个最初未选中的复选框按钮,该按钮没有文本,也没有图标。

代码语言:javascript
复制
JCheckBox jc =new JCheckBox();
 jc.setBounds(50,50,100,100);//使用绝对布局,自定义大小
在这里插入图片描述
在这里插入图片描述

2.用文本创建一个最初未选中的复选框。

代码语言:javascript
复制
 JCheckBox  jl=new JCheckBox ("橘子");
在这里插入图片描述
在这里插入图片描述

不常用的这里不再列出。


五.JComboBox | 代表Swing下拉列表框

JComboBox有4种构造方法:

构造方法

解释

JComboBox()

使用默认数据模型创建JComboBox。

JComboBox(ComboBoxModel aModel)

创建一个JComboBox,它从现有的ComboBoxModel中获取项目。

JComboBox(Object[] items)

创建一个JComboBox,其中包含指定数组中的元素。

JComboBox(Vector<?> items)

创建一个JComboBox,其中包含指定向量中的元素。

1.使用默认数据模型创建JComboBox。

代码语言:javascript
复制
 JComboBox jc =new JComboBox();
 jc.setBounds(50,50,80,30);//使用绝对布局,自定义大小
在这里插入图片描述
在这里插入图片描述

可以看到创建了一个空白的下拉列表框,显然在日常应用中是没有用的,下面来添加选项:

2.创建一个JComboBox,它从现有的ComboBoxModel中获取项目。

代码语言:javascript
复制
 JComboBox jc =new JComboBox();
 jc.setBounds(50,50,100,30);//使用绝对布局,自定义大小
 jc.addItem("--请选择--");
 jc.addItem("身份证");
 jc.addItem("驾驶证");
 jc.addItem("学生证");
在这里插入图片描述
在这里插入图片描述

六.JFrame |代表Swing的框架类

JFrame类有4种构造方法:

构造方法

解释

JFrame()

构造一个最初不可见的新框架。

JFrame(GraphicsConfiguration gc)

在屏幕设备的指定图形配置中创建一个框架和一个空白标题。

JFrame(String title)

使用指定的标题创建一个最初不可见的新框架。

JFrame(String title, GraphicsConfiguration gc)

创建具有指定标题和指定屏幕设备图形配置的JFrame。

1.使用指定的标题创建一个最初不可见的新框架。

代码语言:javascript
复制
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
public class zujian extends JFrame{
public  void windows() {
 //实例化JFrame对象,就是创建一个窗体
 JFrame jf =new JFrame("花狗");//设置窗体标题
 //获取容器
 Container c =jf.getContentPane();
 jf.setLayout(null);  //告诉窗体取消边界布局
 jf.setVisible(true);
 jf.setSize(300,300);
}
 public static void main(String[] args) {
    new zujian().windows();
 }
}
在这里插入图片描述
在这里插入图片描述

七.JDialog | 代表Swing版本的对话框

JDialog有N种,确实有点多,只列出常见的:

构造方法

解释

JDialog()

创建没有标题和指定框架所有者的非模态对话框。

JDialog(Frame owner)

创建一个非模态对话框,指定框架为其所有者,标题为空。

JDialog(Frame owner, boolean modal)

以空标题和指定的模式和框架作为其所有者创建对话框。

JDialog(Frame owner, String title)

创建具有指定标题和指定所有者框架的非模态对话框。

JDialog(Frame owner, String title, boolean modal)

创建具有指定标题、所有者框架和模式的对话框。

1.创建具有指定标题、所有者框架和模式的对话框。

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
public class windowpr extends JDialog{
 public windowpr(MyFrame frame) {
  //实例化一个JDialog类对象,指定对话框的父窗体,窗体标题和类型
  super(frame,"第一个JDialog窗体",true);
  Container container =getContentPane();//创建一个容器
  container.add(new JLabel("这是一个对话框"));//在容器中添加标签
  setBounds(120,120,100,100);//设置对话框窗体大小
 }
}
在这里插入图片描述
在这里插入图片描述

八.JLabel| 代表Swing中的标签组件

JLabel有6种构造方法:

构造方法

解释

JLabel()

创建一个没有图像和标题为空字符串的JLabel实例。

JLabel(Icon image)

使用指定的图标创建JLabel实例。

JLabel(Icon image, int horizontalAlignment)

使用指定的图像和水平对齐方式创建JLabel实例。

JLabel(String text)

使用指定的文本创建JLabel实例。

JLabel(String text, Icon icon, int horizontalAlignment)

使用指定的文本、图像和水平对齐方式创建JLabel实例。

JLabel(String text, int horizontalAlignment)

使用指定的文本和水平对齐方式创建JLabel实例。

1.创建一个没有图像和标题为空字符串的JLabel实例。

代码语言:javascript
复制
   JLabel jl=new JLabel();//创建一个标签
在这里插入图片描述
在这里插入图片描述

这类标签没有上面实际作用,我们继续往下看:

2.使用指定的文本创建JLabel实例。

代码语言:javascript
复制
JLabel jl=new JLabel("标签");//创建一个标签
在这里插入图片描述
在这里插入图片描述

3.使用指定的图标创建JLabel实例。

代码语言:javascript
复制
import java.awt.*;
import javax.swing.*;
public class DrawIcon implements Icon {
 private int width;  //设置图标的宽
 private int height; //设置图标的长
 public int getIconHeight() {
  return this.height;
 }
 public int getIconWidth() {
  return this.width;
 }
 public DrawIcon(int width,int height) {
  this.width=width;
  this.height=height;
 }
 public void paintIcon(Component arg0,Graphics arg1,int x,int y) {
  arg1.fillOval(x, y, width, height);
 }
 public static void main(String[] args) {
    DrawIcon icon =new DrawIcon(15,15);
    JLabel  jl=new JLabel ("标签",icon,SwingConstants.CENTER);
    JFrame jf =new JFrame("花狗");
 jf.setLayout(null);  //告诉窗体取消边界布局
 jl.setBounds(50,50,100,100);//使用绝对布局,自定义按钮大小
    Container c=jf.getContentPane();
    c.add(jl);
    jf.setVisible(true);
    jf.setSize(300,300);
 }
}
在这里插入图片描述
在这里插入图片描述

8.JRadioButton | 代表Swing单选按钮

构造方法

解释

JRadioButton()

创建一个没有设置文本的初始未选单选按钮。

JRadioButton(Action a)

创建一个radiobutton,其中的属性取自提供的操作。

JRadioButton(Icon icon)

创建一个最初未选择的单选按钮,该按钮具有指定的图像,但没有文本。

JRadioButton(Icon icon, boolean selected)

创建具有指定图像和选择状态但没有文本的单选按钮。

JRadioButton(String text)

用指定的文本创建未选中的单选按钮。

JRadioButton(String text, boolean selected)

创建具有指定文本和选择状态的单选按钮。

JRadioButton(String text, Icon icon)

创建一个单选按钮,该按钮具有指定的文本和图像,并且最初未被选中。

JRadioButton(String text, Icon icon, boolean selected)

创建具有指定文本、图像和选择状态的单选按钮。

1. 创建一个没有设置文本的初始未选单选按钮。

代码语言:javascript
复制
JRadioButton jr =new JRadioButton();
在这里插入图片描述
在这里插入图片描述

2.用指定的文本创建未选中的单选按钮。

代码语言:javascript
复制
JRadioButton jr =new JRadioButton("香蕉");
在这里插入图片描述
在这里插入图片描述

9.JList| 代表能够在用户界面中显示一系列条目的组件

JList类有4个构造方法:

构造方法

解释

JList()

使用空的只读模型构造JList。

JList(E[] listData)

构造一个JList,用于显示指定数组中的元素。

JList(ListModel dataModel)

构造一个JList,用于显示来自指定的非空模型的元素。

JList(Vector<? extends E> listData)

构造一个JList,用于显示指定向量中的元素。

1.使用空的只读模型构造JList。

代码语言:javascript
复制
JList jr =new JList();
在这里插入图片描述
在这里插入图片描述

和下拉列表框一样空白,没有什么实际价值。

2.构造一个JList,用于显示指定向量中的元素。

代码语言:javascript
复制
 Vector vt =new Vector();
 vt.add("红色");
 vt.add("绿色");
 vt.add("蓝色");
 JList jr =new JList();
 jr.setListData(vt);
在这里插入图片描述
在这里插入图片描述

和下拉列表框不同的是该组件直接显示选项。


10.JTextField | 代表文本框

JTextField类有5种构造方法:

构造方法

解释

JTextField()

构造一个新TextField。

JTextField(Document doc, String text, int columns)

构造一个新的JTextField,该字段使用给定的文本存储模型和给定的列数。

JTextField(int columns)

构造具有指定列数的新空TextField。

JTextField(String text)

构造一个用指定文本初始化的新TextField。

JTextField(String text, int columns)

构造一个用指定的文本和列初始化的新TextField。

1.构造一个用指定文本初始化的新TextField。

代码语言:javascript
复制
 String str="大家好,我是花狗。";
 JTextField jr =new JTextField(str);
在这里插入图片描述
在这里插入图片描述

11.JPasswordField | 代表密码框

JPasswordField类有5种构造方法:

构造方法

解释

JPasswordField()

构造一个新的JPasswordField,其中包含一个默认文档、null起始文本字符串和0列宽度。

JPasswordField(Document doc, String txt, int columns)

构造一个新的JPasswordField,该字段使用给定的文本存储模型和给定的列数。

JPasswordField(int columns)

使用指定的列数构造新的空JPasswordField。

JPasswordField(String text)

构造一个用指定文本初始化的新JPasswordField。

JPasswordField(String text, int columns)

构造一个用指定文本和列初始化的新JPasswordField。

1.构造一个新的JPasswordField

代码语言:javascript
复制
 JPasswordField   jr =new JPasswordField  ();
在这里插入图片描述
在这里插入图片描述

可以通过该方法修改回显字符:

代码语言:javascript
复制
jr.setEchoChar('#');
在这里插入图片描述
在这里插入图片描述

12.JTextArea | 代表Swing中的文本区域

JTextArea类有有6种构造方法:

构造方法

解释

JTextArea()

构造一个新的文本区域。

JTextArea(Document doc)

使用给定的文档模型构造一个新的JTextArea,并默认为所有其他参数(null, 0,0)。

JTextArea(Document doc, String text, int rows, int columns)

用指定的行数和列数以及给定的模型构造一个新的JTextArea。

JTextArea(int rows, int columns)

用指定的行数和列数构造新的空TextArea。

JTextArea(String text)

构造一个显示指定文本的新文本区域。

JTextArea(String text, int rows, int columns)

用指定的文本和行与列的数目构造一个新TextArea。

1.构造一个新的文本区域。

代码语言:javascript
复制
JTextArea   jr =new JTextArea  ();

与文本框不同的是这个可以输入内容:

在这里插入图片描述
在这里插入图片描述

也可以提前显示一些内容,就好比一些软件搜索框默认热门内容:

2.构造一个显示指定文本的新文本区域。

在这里插入图片描述
在这里插入图片描述

13.JOptionPane | 代表Swing中的一些对话框

JOptionPane类有7种构造方法:

构造方法

解释

JOptionPane()

使用测试消息创建JOptionPane。

JOptionPane(Object message)

创建JOptionPane实例,以显示使用纯消息消息类型和UI提供的默认选项的消息。

JOptionPane(Object message, int messageType)

创建JOptionPane实例,以显示具有指定消息类型和默认选项的消息。

JOptionPane(Object message, int messageType, int optionType)

创建JOptionPane实例,以显示具有指定消息类型和选项的消息。

JOptionPane(Object message, int messageType, int optionType, Icon icon)

创建JOptionPane实例,以显示具有指定消息类型、选项和图标的消息。

JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options)

创建JOptionPane实例,以显示具有指定消息类型、图标和选项的消息。

JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options, Object initialValue)

创建JOptionPane实例,以显示具有指定消息类型、图标和选项的消息,并指定初始选择的选项。

代码语言:javascript
复制
 JOptionPane jo =new JOptionPane();
 jo.showMessageDialog(null, "普通提示框");
在这里插入图片描述
在这里插入图片描述

若有错误,欢迎指正,欢迎评论。 每文一句:奋斗不是简单的吃苦,奋斗是一种心态。一种做任何事情,只要有一丝可能,就愿意全心全意去投入和尝试的心态。奋斗的心态会调用尽你前半生所有的智慧、资源、技巧和情商去面对问题,还会把你以前积累上的不足,以最直接的方式暴露在你前面。让你知道自己有多强,也让你知道自己有多弱。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.前言
  • 二.Swing常用组件
  • 三.JButton | 代表Swing按钮
    • 1.创建没有设置文本或图标的按钮
      • 2.创建带有文本的按钮
        • 3.创建带有图标的按钮
        • 四.JCheckBox| 代表Swing中的复选框组件
          • 1.创建一个最初未选中的复选框按钮,该按钮没有文本,也没有图标。
            • 2.用文本创建一个最初未选中的复选框。
            • 五.JComboBox | 代表Swing下拉列表框
              • 1.使用默认数据模型创建JComboBox。
                • 2.创建一个JComboBox,它从现有的ComboBoxModel中获取项目。
                • 六.JFrame |代表Swing的框架类
                  • 1.使用指定的标题创建一个最初不可见的新框架。
                  • 七.JDialog | 代表Swing版本的对话框
                    • 1.创建具有指定标题、所有者框架和模式的对话框。
                    • 八.JLabel| 代表Swing中的标签组件
                      • 1.创建一个没有图像和标题为空字符串的JLabel实例。
                        • 2.使用指定的文本创建JLabel实例。
                          • 3.使用指定的图标创建JLabel实例。
                          • 8.JRadioButton | 代表Swing单选按钮
                            • 1. 创建一个没有设置文本的初始未选单选按钮。
                              • 2.用指定的文本创建未选中的单选按钮。
                              • 9.JList| 代表能够在用户界面中显示一系列条目的组件
                                • 1.使用空的只读模型构造JList。
                                  • 2.构造一个JList,用于显示指定向量中的元素。
                                  • 10.JTextField | 代表文本框
                                    • 1.构造一个用指定文本初始化的新TextField。
                                    • 11.JPasswordField | 代表密码框
                                      • 1.构造一个新的JPasswordField
                                      • 12.JTextArea | 代表Swing中的文本区域
                                        • 1.构造一个新的文本区域。
                                          • 2.构造一个显示指定文本的新文本区域。
                                          • 13.JOptionPane | 代表Swing中的一些对话框
                                          相关产品与服务
                                          容器服务
                                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档