GUI入门(Swing包)

这篇博客介绍了GUI的基本概念,重点讲解了JAVA中的Swing包,包括JFrame窗口和JDialog弹窗的使用,如何在JFrame中添加组件,以及如何创建和使用图片标签、单选按钮和多选按钮。Swing包提供了比AWT更多的功能,并且详细说明了错误处理,如在添加组件时需要实例化一个Container。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GUI入门(Swing包)

1.1GUI的概述

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 [1]

图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

1.2JAVA针对GUI提供了三个包

java.awt 包 – 主要提供字体/布局管理器

javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)

java.awt.event 包 – 事件处理,后台功能的实现。

1.3 Swing包下面的类及其作用

A.两者大致相同但Swing类提供了一些AWT没有的功能

1.3.1窗口类JFrame

package Swing;

import A.J;

import javax.swing.*;


public class JF {
    public static void main(String[] args) {
        JFrame jf = new JFrame("我的JFrame窗口");
        jf.setBounds(200,200,200,200);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗口可关闭
        //给窗口设置一段文字
      JLabel label = new JLabel("你好世界");
        jf.add(label);//把文字加入到窗口中
    }
}

1.3.2 弹窗JDialog

定义:点击这个按钮会弹出另一个出口

重点:弹窗的窗口必须继承弹窗类、

package Swing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Diagotest {
    public static void main(String[] args) {
new diago();
    }
}
class  diago extends JFrame{
    public  diago(){
        setBounds(200,200,200,200);
        setVisible(true);
        setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );//设置窗口关闭事件
        Container container =getContentPane();//设置一个容器 可以看作是JFRAME的实例化
        container.setLayout(null);//采用绝对布局
        JButton jButton = new JButton("点击按钮弹出弹窗");//创建一个按钮
        jButton.setBounds(50,50,50,50);
        //增加按钮监听时间
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
         new tanchuang();
            }
        });container.add(jButton);//把弹窗添加到容器中
    }
}class  tanchuang extends JDialog{
    public tanchuang (){
        setBounds(100,100,100,100);
        setVisible(true);
        add(new JLabel("我的弹窗"));
    }
}
可能错的地方:JFrame必须实例化一个容器 Container才能将组件加到窗口中去: Container container =getContentPane();//设置一个容器 可以看作是JFRAME的实例化

1.3.4 图片标签

要点://绘制图标需要继承JFrame类并实现ICON接口
package Swing;

import javax.swing.*;
import java.awt.*;

//绘制图标需要继承JFrame类并实现ICON接口
public class Myicon extends JFrame implements  Icon {
    private  int width;
    private  int  heigth;
    public  Myicon(){}//无参构造
    public  Myicon(int width,int heigth){
    }
    public  void  init (){
        Myicon myicon = new Myicon(15,15);//图标可以放在标签上也可以放在按钮上
        JLabel icontest = new JLabel("icontest", myicon, SwingConstants.CENTER);
        Container contentPane = getContentPane();
        contentPane.add(icontest);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x,y,width,heigth);//这里的的g是画笔用来画图标的
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public int getIconHeight() {
        return this.heigth;
    }

    public static void main(String[] args) {
        new Myicon().init();
    }
}
把图标放到标签上
package Swing;

import A.N;
import com.sun.org.apache.bcel.internal.generic.NEW;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class Image  {
    public static void main(String[] args) {
        new  Images();
    }
}
class  Images extends  JFrame{
    public Images(){
        Container container = getContentPane();
        setBounds(200,200,200,200);
        JLabel jLabel = new JLabel("做人要做陈冠希");
        URL url =Images.class.getResource("1.jpg");//获取图片地址
        ImageIcon imageIcon = new ImageIcon(url);//把图片封装一哈
        jLabel.setIcon(imageIcon);
        jLabel.setHorizontalAlignment(SwingConstants.CENTER);//图片放到中间
        add(jLabel,BorderLayout.CENTER);//把标签放到容器中
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

1.3.5单选按钮和多选按钮

A.单选按钮

new 多个个JRadioButton按钮 然后把这些按钮添加到一个ButtonGroup组中

这样便可生成单选按钮

class  DAN extends JFrame{
    public DAN(){
        Container contentPane = getContentPane();
        //新建三个按钮
        JRadioButton jButton0 = new JRadioButton("00");
        JRadioButton jButton1 = new JRadioButton("01");
        JRadioButton jButton2 = new JRadioButton("02");
        //新建一个按钮分组
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(jButton0);
        buttonGroup.add(jButton1);
        buttonGroup.add(jButton2);
        contentPane.add(jButton0,BorderLayout.WEST);
        contentPane.add(jButton1,BorderLayout.CENTER);
        contentPane.add(jButton2,BorderLayout.EAST);
        setVisible(true );
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(200,200,200,200);
    }
}
B.多选按钮

new 一些JCheckBox 这些按钮便是多选按钮

class  DUO extends  JFrame{
    public  DUO(){
        Container contentPane = getContentPane();
        JCheckBox jCheckBox1 = new JCheckBox("01");
        JCheckBox jCheckBox2= new JCheckBox("02");
        contentPane.add(jCheckBox1,BorderLayout.SOUTH);
        contentPane.add(jCheckBox2,BorderLayout.NORTH);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(200,200,200,200);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值