【了解Java GUI编程】AWT和Swing的基本用法

这篇具有很好参考价值的文章主要介绍了【了解Java GUI编程】AWT和Swing的基本用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GUI :Graphical User Interface,图形用户界面,指在计算机出现后,在屏幕上使用图形界面来帮助用户(User)与机器(Machine)打交道用的界面接口(Interface)。简单地理解,就是电脑打开的各个界面及弹窗,用户可进行鼠标、键盘等操作。

目录

一、AWT

1.1 组件和容器

1.1.1 AWT常用组件

1.1.2 常用的容器

1.2 布局管理器

1.3 事件监听

1.4 简易计算器的应用案例

 二、Swing

 2.1 JDialog弹窗

2.2 图标

2.2.1 Icon图标

2.2.2 ImageIcon图像图标

 2.4 Panel面板

 2.4 按钮

2.4.1 JButton图片按钮

2.4.2 JRadioButton单选框按钮

2.4.3 JCheckBox多选框按钮

2.5 列表

2.5.1 JComboBox下拉框

2.5.2 列表框

2.6 Scroll滚动条


一、AWT

AWT:抽象窗口工具包 (Abstract Windowing Toolkit),是Java平台独立的窗口系统,图形和用户界面器件的工具包。AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。

java.awt包提供了基本的java程序的设计工具。主要包括下述三个概念:

  • 组件——Component

  • 容器——Container

  • 布局管理器——LayoutManager

1.1 组件和容器

1.1.1 AWT常用组件

组件名称

构造方法

使用说明

按钮(Button)

Button b=new Button("退出");

单击按钮产生ActionEvent事件,实现ActionListener接口并重写actionPerformed()方法监听和处理事件

复选框(Checkbox)

Checkbox ch=new Checkbox("one",true);

选中复选框产生ItemAction事件,实现ItemListener接口监听和处理事件

下拉菜单(Choice)

Choice colorChoose=new Choice();

实现ItemListener接口监听和处理事件;Add()方法可在下拉列表中添加选项

画布(Canvas)

public Canvas(GraphicsConfigurationconfig);

重写Canvas类的paint()方法实现完成图形处理;实现MouseListener和KeyListener接口监听Canvas组件的鼠标和键盘事件

文本框(TextField)

TextField ft=new TextField(16);

//宽度为16个字符

文本框只能显示一行,按Enter键时产生ActionEvent事件,通过ActionListener接口中的actionPerformed()方法处理事件

文本域(TextAera)

TextArea ta=new TextArea("Textarea",4,10);

//4行10列

可显示多行多列文本和滚动条

列表框(List)

List list=new List(4,false);

//4行,不允许多选

提供多个文本选项,支持滚动条,可以浏览多项

对话框(Dialog)

Window类的子类

文件对话框(FileDialog)

Filedialog fd=new Filedialog(frm,"fileddilog");

当用户想打开或存储文件时,可使用文件对话框进行操作

菜单栏(MenuBar)

MenuBar mb=new MenuBar();

通过frm.setMenuBar(mb)语句可将菜单mb设置为Frame对象frm的主菜单

下拉菜单(Menu)

Menu m=new Menu("Menu");

通过mb.add(m)可将m下拉列表添加到菜单栏中

菜单项(MenuItem)

MenuItem mi=new MenuItem("Openit");

通过mi.add(mi)将菜单项mi添加到下一个下拉列表m中。

颜色(Color)

//非构造方法,两种方法设置组件背景色

setBackground(Color.BLUE);

setBackground(newColor(100,100,100));

通过setForeground()方法设置组件前景色,通过setBackground()方法设置组件背景色。颜色值可使用Color类的颜色常量来设置,也可通过指定RGB颜色对象值设置

字体(Font)

Font font=new Font("宋体",Font.BOLD,10);

//宋体,10号,加粗

按顺序向Font()构造方法传递有关字体设置的参数

1.1.2 常用的容器

        主要有三类:Panel(面板), Frame(框架), Applet(小程序)

容器名称

构造方法

使用说明

面板(Panel)

Panel pnl = new Panel(); 面板是一种透明的容器,没有标题和边框,与Frame 不同,Panel不能作为最外层的容器单独存在,它首先必须作为一个组件放置在其他容器(一般为Frame)中。

框架(Frame)

Frame frm = new Frame("New Window"); 使用Window的子类Frame类进行窗口实例化,框架的外观就像平常Windows系统下的窗口,setSize()方法可以设置框架尺寸的大小,setVisibe()方法可以设置窗口的可见性。

小程序(Applet)

Applet apt = new Applet(); Frame一般用作Java应用程序的窗口,而Applet是Java小程序的窗口。与Frame不同,Applet是在网页中显示的,也可以通过添加Panel进行组件布局。

        示例1:创建Frame窗口并设置属性

//创建一个AWT窗口

public class MyAWTDemo {
    public static void main(String[] args) {
        //创建一个frame框架
        Frame frame=new Frame();
        //设置Java窗体组件的名称
        frame.setTitle("JavaGUIComponent");
        //设置窗体的顶点位置及其大小
        frame.setBounds(20,30,300,280);
        //设置窗体是否可见
        frame.setVisible(true);
        //设置窗体背景颜色
        frame.setBackground(Color.gray);
        frame.add(new List());
        /*给窗体添加监听器的方法改变窗体状态,监听器的参数是一个内部类,
         *     内部类定义了窗体关闭的处理方法
         */
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
         
        //创建一个panel面板
        Panel panel=new Panel();
        //给panel面板添加文本框、文本域、列表、单选按钮、复选按钮、画布、标签、字体大小、事件、滚动条
        panel.add(new TextField(20));
        panel.add(new Button("Click me!"));
         
        frame.add(panel);
    }
}

        示例2:创建自己的Frame窗口类(继承extends

public class MyFrameDemo {

	public static void main(String[] args) {
		// 展示多个窗口
		MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.red);
		MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.yellow);
		MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.green);
		MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.blue);

	}

}

class MyFrame extends Frame{//使用继承关系,定义实现所需功能的自己的窗口
	static int id = 0;//可能存在多个窗口,我们需要一个计数器
	
	public MyFrame(int x,int y, int w,int h,Color color) {
		super("MyFrame"+(++id));
		setBackground(color);
		setBounds(x,y,w,h);
		setVisible(true);
		
	}
}

 文章来源地址https://www.toymoban.com/news/detail-488233.html

 1.2 布局管理器

        常见分类:

布局管理器类型

构造方法

使用说明

流布局管理器(FlowLayout) 

new FlowLayout();//默认构造方法,居中对齐,横向和纵向间隔均默认为5像素

new FlowLayout(FlowLayout.RIGHT,20,40);//右对齐,横向间隔20像素,纵向间隔40像素

FlowLayout是Panel 和 Applet 的默认布局管理器。在该布局管理器中,组件在容器中按照从上到下,从左到右的顺序进行排列,行满后则换行。
边界布局管理器(BorderLayout) frame.add(button1,BorderLayout.EAST);//将按钮button1放置在最右侧 将容器分成North、South、East、West和Center 5个区域,每个区域只能放置一个组件,使用add()方法添加组件到容器指定区域。若容器大小发生变换,组件的相对位置不变。
网格布局管理器(GridLayout) GridLayout gl = new GridLayout(3,5); //3行5列网格式布局 GridLayout 可使容器中的各个组件按照从上到下,从左到右的规律呈网格状布局,每个组件始终平均占据容器的空间。

         示例1:东西南北中的边界式布局按钮组件

package GUI;

import java.awt.*;

public class MyBorderLayout {

	public static void main(String[] args) {
		Frame frame = new Frame("MyBorderLayout");
		
		//组件-按钮
		Button east = new Button("East");
		Button west = new Button("West");
		Button south = new Button("South");
		Button north = new Button("North");
		Button center = new Button("Center");
		
		//设置为东西南北中的边界式布局
		frame.add(east,BorderLayout.EAST);
		frame.add(west,BorderLayout.WEST);
		frame.add(south,BorderLayout.SOUTH);
		frame.add(north,BorderLayout.NORTH);
		frame.add(center,BorderLayout.CENTER);
		
		frame.setSize(200, 200);
		frame.setVisible(true);

	}

}

        运行结果出现如下界面:

【了解Java GUI编程】AWT和Swing的基本用法

         示例2:表格式布局组件

package GUI;

import java.awt.*;

public class MyGridLayout {

	public static void main(String[] args) {
		Frame frame = new Frame("MyGridLayout");
		
		//组件-按钮
		Button btn1 = new Button("btn1");
		Button btn2 = new Button("btn2");
		Button btn3 = new Button("btn3");
		Button btn4 = new Button("btn4");
		Button btn5 = new Button("btn5");
		Button btn6 = new Button("btn6");
		
		//设置为表格式布局:3行2列
		frame.setLayout(new GridLayout(3,2));
		
		frame.add(btn1);
		frame.add(btn2);
		frame.add(btn3);
		frame.add(btn4);
		frame.add(btn5);
		frame.add(btn6);
		
		frame.pack();//Java的一个函数,自动最优布局(可以不写)
		frame.setVisible(true);

	}

}

        运行结果如下:

【了解Java GUI编程】AWT和Swing的基本用法

 1.3 事件监听

        通过ActionListener动作监听器接口实现组件的动作发生之后的事件处理。

        定义一个事件监听的类:

class  自定义监听类  implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {       //重写动作执行函数
        ......;
    }
}

         示例1:事件监听,实现按钮点击时可输出文字

package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//事件监听

public class TestActionEvent01 {

	public static void main(String[] args) {
		// 按下按钮,触发一些事件
		Frame frame = new Frame();
		Button button = new Button("button1");

		//因为addActionListener()需要一个ActionListener,所以我们需要构造一个ActionListener
		MyActionListener myActionListener = new MyActionListener();
		button.addActionListener(myActionListener);
		
		frame.add(button,BorderLayout.CENTER);
		frame.pack();
		
		windowClose(frame);//关闭窗口
		frame.setVisible(true);
	}
	
	//关闭窗体事件
	private static void windowClose(Frame frame) {
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

}

//事件监听
class MyActionListener implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("按下按钮了");
		
	}
	
}

        示例2:输入框(TextField)事件监听,实现输入密码,并在控制台得到密码的内容

package GUI;

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

public class TestText01 {

	public static void main(String[] args) {
		//启动
		new MyFrame2();
	}

}

class MyFrame2 extends Frame{
	public MyFrame2() {
		TextField textField = new TextField();
		add(textField);//在frame中添加文本框对象
		
		//监听这个文本框输入文字(密码)
		MyActionListener2 myActionListener2  =new MyActionListener2();
		//按下enter键,就会触发这个输入框的事件
		textField.addActionListener(myActionListener2);
		
		//设置替换编码(在输入框中输入的都以*来展示,而按下回车键后在控制台可以得到输入的内容)
		textField.setEchoChar('*');
		
		setVisible(true);
		pack();
	}
}

class MyActionListener2 implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		//获得一些资源,返回的对象
		TextField field = (TextField) e.getSource();
		//获得输入框中的文本
		System.out.println(field.getText());
		//点击回车后,输出文本框的内容后,清空文本框
		field.setText("");//null:空;  "":空白字符串
	}
	
}

        运行结果:

【了解Java GUI编程】AWT和Swing的基本用法

        示例3 :鼠标监听事件,用鼠标画画

package GUI_2;
//鼠标监听事件:用鼠标画画

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;

public class MouseListenerTest {

	public static void main(String[] args) {
		new MyFrame("画图");

	}

}

class MyFrame extends Frame{
	
	ArrayList points;
	
	//需要画笔,并监听鼠标当前的位置,需要集合来存储这个点
	public MyFrame(String title) {
		super(title);
		setBounds(200,200,400,300);
		
		//存鼠标点击的点
		points = new ArrayList<>();
		
		setVisible(true);
		
		//鼠标监听器,针对这个窗口
		this.addMouseListener((MouseListener) new MyMouseListener());
	}
	
	@Override
	public void paint(Graphics g) {
		//画画,监听鼠标的事件
		Iterator iterator = points.iterator();//使用迭代器画点
		while(iterator.hasNext()) {//如果鼠标指向下一个点,指针指向下一个
			Point point = (Point) iterator.next();
			g.setColor(Color.BLUE);
			g.fillOval(point.x, point.y, 10, 10);//画点
		}
	}
	
	//添加一个点到界面上
	public void addPaint(Point point) {
		points.add(point);
	}
	
	
	
	//适配器模式,否则需要重写MouseListener类的所有内置函数
	private class MyMouseListener extends MouseAdapter{
		//鼠标  按下,弹起,按住不放
		public void mousePressed(MouseEvent e) {//e为当前鼠标
			MyFrame myFrame = (MyFrame) e.getSource();
			//点击时,界面上会产生一个点,这个点就是鼠标的点
			myFrame.addPaint(new Point(e.getX(),e.getY()));
			new Point(e.getX(),e.getY());
			
			//每次点击鼠标都需要重新画一遍,刷新
			myFrame.repaint();
		}

	}
}

         示例4:窗口监听事件,关闭窗口

package GUI_2;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new WindowFrame();
	}

}

class WindowFrame extends Frame{
	public WindowFrame() {

		setBounds(100,100,200,200);
		setVisible(true);
		
		//addWindowListener(new MyWindowListener());//使用内部类关闭窗口
		this.addWindowListener(
				//匿名内部类关闭窗口
				new WindowAdapter() {
					@Override
					public void windowClosing(WindowEvent e) {
						System.out.println("你点击了关闭");//输出事件的响应
						System.exit(0);//正常退出;exit(1)为非正常退出
					}
					
					@Override
					public void windowActivated(WindowEvent e) {//激活窗口
						System.out.println("windowActivated");
					}
				}
				);
	}
	
	class MyWindowListener extends WindowAdapter{
		@Override
		public void windowClosing(WindowEvent e) {
			System.exit(0);//正常退出;exit(1)为非正常退出
		}
	}
}

1.4 简易计算器的应用案例

        案例1 :通过设计构造器(Calculator()),制作一个简易计算器

package GUI;

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

//制作一个简易计算器

public class MyCalculation {

	public static void main(String[] args) {
		new Calculator();

	}

}

//计算器类
class Calculator extends Frame{
	//构造器,重写类的初始化
	public Calculator(){
		//3个文本框
		TextField num1 = new TextField(10);//字符数
		TextField num2 = new TextField(10);//字符数
		TextField num3 = new TextField(20);//字符数
		//1个按钮
		Button button = new Button("=");
		
		button.addActionListener(new MyCalculatorListener(num1,num2,num3));
		//1个标签
		Label label = new Label("+");
		
		//流式布局
		setLayout(new FlowLayout());
		
		//按照排列的顺序添加控件
		add(num1);
		add(label);
		add(num2);
		add(button);
		add(num3);
		
		pack();
		setVisible(true);
	}
}

//监听器类
class MyCalculatorListener implements ActionListener{

	//获取三个变量
	private TextField num1,num2,num3;
	
	public MyCalculatorListener(TextField num1,TextField num2,TextField num3) {
		this.num1 = num1;
		this.num2 = num2;
		this.num3 = num3;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		//1.获得加数和被加数
		int n1 = Integer.parseInt(num1.getText());
		int n2 = Integer.parseInt(num2.getText());
		
		//2.将这个值加法运算后,放到第三个(运算结果)框
		num3.setText(""+(n1+n2));
		
		//3.清除前两个框
		num1.setText("");
		num2.setText("");
	}
	
}

         运行结果:在前两个文本框输入两个数(如左图),点击“=”,得到加法运算结果(如右图)

【了解Java GUI编程】AWT和Swing的基本用法【了解Java GUI编程】AWT和Swing的基本用法

        上述MyCalculation.java是通过设计构造器的一种面向过程的编程;对代码进行面向对象设计的优化,在主函数中直接调用方法来运行:

        案例2:简易计算器的优化设计

package GUI;

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

//简易计算器MyCalculation的优化设计:改造为面向对象的方法设计

public class MyCalculation02 {

	public static void main(String[] args) {
		new Calculator02().loadFrame();//调用loadFrame()方法直接运行

	}

}

//计算器类
class Calculator02 extends Frame{
	//属性
	TextField num1,num2,num3;
	//方法
	public void loadFrame() {  //定义类的方法
		//3个文本框
		num1 = new TextField(10);//字符数
		num2 = new TextField(10);//字符数
		num3 = new TextField(20);//字符数
		//1个按钮
		Button button = new Button("=");
		
		button.addActionListener(new MyCalculatorListener02(this));
		//1个标签
		Label label = new Label("+");
		
		//流式布局
		setLayout(new FlowLayout());
		
		//按照排列的顺序添加控件
		add(num1);
		add(label);
		add(num2);
		add(button);
		add(num3);
		
		pack();
		setVisible(true);
	}

}

//监听器类
class MyCalculatorListener02 implements ActionListener{

	//获取计算器这个对象,在一个类中组合另一个类
	Calculator02 calculator = null;
	
	public MyCalculatorListener02(Calculator02 calculator) {
		this.calculator = calculator;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		//1.获得加数和被加数
		//2.将这个值加法运算后,放到第三个(运算结果)框
		//3.清除前两个框
		int n1 = Integer.parseInt(calculator.num1.getText());
		int n2 = Integer.parseInt(calculator.num2.getText());
		calculator.num3.setText(""+(n1+n2));
		calculator.num1.setText("");
		calculator.num2.setText("");
	}
	
}

 二、Swing

        Swing 同样是一个为 Java 设计的 GUI 工具包,提供许多比 AWT 更好的屏幕显示元素,它们用纯 Java 写成,故同 Java 一样可以跨平台运行。与AWT相比,最直观的优点在于,Swing窗口可以通过一行命令直接关闭窗口。

        建立Swing窗口的格式

public  class  Swing窗口类  extends  JFrame{

    public Swing窗口类() {
        Container container = this.getContentPane();   //创建容器
        
        //新建需要的组件和面板元素变量
        ......;


        container.add( 组件 / 面板 );    //将组件或面板添加到容器中
        
        //JFrame 的基础设置:设置窗口大小、可见、可关闭
        this.setVisible(true);
        this.setBounds(100,100,300,400);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗口
    }
    public static void main(String[] args) {
        new Swing窗口类()

    }

}

 2.1 JDialog弹窗

        示例:点击按钮,出现弹窗

package GUI_3;
//JDialog弹窗

import java.awt.Container;
import java.awt.Dialog;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

//主窗口
public class DialogDemo extends JFrame{

	public DialogDemo(){
		//窗口最基本的设置
		this.setVisible(true);
		this.setSize(700,500);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		
		//JFrame放东西,容器
		Container container = this.getContentPane();
		//绝对布局
		container.setLayout(null);
		
		//按钮
		JButton button = new JButton("弹出一个对话框");//创建
		button.setBounds(30, 30, 200, 50);
		
		//点击这个按钮的时候,弹出一个弹窗
		button.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {//监听器
				//弹窗
				new MyDialogDemo();//用事件去绑定弹窗
			}
			
		});
		
		container.add(button);
	}
	
	public static void main(String[] args) {

		new DialogDemo();
	}

}

//弹窗的窗口
class MyDialogDemo extends JDialog{
	public MyDialogDemo() {
		this.setVisible(true);
		this.setBounds(100,100,500,500);
		//this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//主弹窗已经设置过关闭了,不用重复定义
		
		Container container = this.getContentPane();
		container.setLayout(null);
		
		Label label = new Label("欢迎学习Java");
		label.setBounds(100, 100, 200, 200);
		container.add(label);
		
	}
}

2.2 图标

2.2.1 Icon图标

package GUI_3;

import java.awt.*;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;

//图标:需要实现类,Frame继承
public class IconDemo extends JFrame implements Icon{

	private int width;
	private int height;
	
	public IconDemo() {}//无参构造
	
	public IconDemo(int width,int height) {
		this.width = width;
		this.height = height;
	}
	
	public void init() {
		IconDemo iconDemo = new IconDemo(15,15);//初始化定义一个图标
		//图标放在标签(的中间),也可以放在按钮上
		JLabel jlabel = new JLabel("icontest",iconDemo,SwingConstants.CENTER);
		
		Container container = getContentPane();
		container.add(jlabel);
		
		//设置窗口可见及可关闭
		this.setVisible(true);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new IconDemo().init();

	}

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

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

	@Override
	public void paintIcon(Component c, Graphics g, int x, int y) {
		// TODO Auto-generated method stub
		g.fillOval(x, y, width, height);
	}

}

        运行结果,得到如下界面:

【了解Java GUI编程】AWT和Swing的基本用法

 2.2.2 ImageIcon图像图标

        注意:在使用前应将图片(这里的图片命名为“down.png”)放在该工作空间的地址下

package GUI_3;
//图像图标的使用

import java.awt.Container;
import java.net.URL;

import javax.swing.*;

public class ImageIconDemo extends JFrame{
	
	public ImageIconDemo() {
		
		JLabel label = new JLabel("ImageIcon");//界面中每一个图片都是一个带有地址的label
		//获取图片的地址
		URL url = ImageIconDemo.class.getResource("down.png");//通过类获得当前类下的地址
		
		ImageIcon imageIcon = new ImageIcon(url);
		label.setIcon(imageIcon);//居中放置图片
		label.setHorizontalAlignment(SwingConstants.CENTER);
		
		Container container = getContentPane();
		container.add(label);
		
		setBounds(100,100,200,200);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new ImageIconDemo();

	}
}

        运行结果如下:

【了解Java GUI编程】AWT和Swing的基本用法

 2.4 Panel面板

package GUI_3;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.*;

public class JPanelDemo extends JFrame{

	public JPanelDemo() {
		Container container = this.getContentPane();
		container.setLayout(new GridLayout(2,1,10,10));//设置为2行1列的表格式排版,后面两个参数的意思是间距
		
		JPanel panel1 = new JPanel(new GridLayout(1,3));
		
		panel1.add(new JButton("1"));
		panel1.add(new JButton("2"));
		panel1.add(new JButton("3"));
		
		container.add(panel1);
		
		this.setVisible(true);
		this.setSize(500, 500);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new JPanelDemo();

	}

}

 2.4 按钮

2.4.1 JButton图片按钮

package GUI_3;
//图片按钮
import java.awt.*;
import java.net.URL;
import javax.swing.*;

public class JButtonDemo01 extends JFrame{
	
	public JButtonDemo01() {
		Container container = this.getContentPane();
		//将一个图片变为图标
		URL resource = JButtonDemo01.class.getResource("down.png");
		Icon icon  = new ImageIcon(resource);
		
		//把这个图标放按钮上
		JButton button = new JButton();
		button.setIcon(icon);
		button.setToolTipText("图片按钮");
		
		//add
		container.add(button);
		
		this.setVisible(true);
		this.setSize(500, 300);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new JButtonDemo01();

	}

}

 2.4.2 JRadioButton单选框按钮

package GUI_3;
//单选框按钮
import java.awt.*;
import java.net.URL;
import javax.swing.*;

public class JButtonDemo02 extends JFrame{
	
	public JButtonDemo02() {
		Container container = this.getContentPane();
		//将一个图片变为图标
		URL resource = JButtonDemo01.class.getResource("down.png");
		Icon icon  = new ImageIcon(resource);
		
		//单选框
		JRadioButton radioButton1 = new JRadioButton("JRadioButton01");
		JRadioButton radioButton2 = new JRadioButton("JRadioButton02");
		JRadioButton radioButton3 = new JRadioButton("JRadioButton03");
		
		//由于单选框只能选择一个,分组,一个组中只能选择一个
		ButtonGroup group = new ButtonGroup();
		group.add(radioButton1);
		group.add(radioButton2);
		group.add(radioButton3);
		
		container.add(radioButton1,BorderLayout.CENTER);
		container.add(radioButton2,BorderLayout.NORTH);
		container.add(radioButton3,BorderLayout.SOUTH);
		
		this.setVisible(true);
		this.setSize(500, 300);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new JButtonDemo02();

	}

}

2.4.3 JCheckBox多选框按钮

package GUI_3;
//多选框按钮
import java.awt.*;
import java.net.URL;
import javax.swing.*;

public class JButtonDemo03 extends JFrame{
	
	public JButtonDemo03() {
		Container container = this.getContentPane();
		//将一个图片变为图标
		URL resource = JButtonDemo01.class.getResource("down.png");
		Icon icon  = new ImageIcon(resource);
		
		//多选框
		JCheckBox checkBox01  = new JCheckBox("checkBox01");
		JCheckBox checkBox02  = new JCheckBox("checkBox02");
		
		container.add(checkBox01,BorderLayout.NORTH);
		container.add(checkBox02,BorderLayout.SOUTH);
		
		this.setVisible(true);
		this.setSize(500, 300);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new JButtonDemo03();

	}

}

2.5 列表

2.5.1 JComboBox下拉框

package GUI_3;
//下拉框

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

public class ComboboxDemo01 extends JFrame{
	
	public ComboboxDemo01() {
		
		Container container = this.getContentPane();
		
		JComboBox status = new JComboBox();
		status.addItem(null);
		status.addItem("即将上映");
		status.addItem("正在热映");
		status.addItem("已下架");
		
		container.add(status);
		
		this.setVisible(true);
		this.setSize(500,300);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new ComboboxDemo01();

	}

}

        运行结果:

【了解Java GUI编程】AWT和Swing的基本用法

 2.5.2 列表框

        注意:有静态列表和动态列表两种建立方式,一般选择通过定义向量变量,动态初始化列表

package GUI_3;
//列表框

import java.awt.*;
import java.util.Vector;

import javax.swing.*;

public class ComboboxDemo02 extends JFrame{
	
	public ComboboxDemo02() {
		
		Container container = this.getContentPane();

		//生成列表的内容  
		String[] contents = {"1","2","3"};//静态初始化
		
		Vector contents2 = new Vector();//动态初始化
		//列表中需要放入内容
		//JList list = new JList(contents);//静态列表
		
		JList list = new JList(contents2);//动态列表,,一般选择动态扩容!!
		contents2.add("zhangsan");
		contents2.add("lisi");
		contents2.add("wangwu");
		
		
		container.add(list);
		
		this.setVisible(true);
		this.setSize(500,300);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new ComboboxDemo02();
	}

}

2.6 Scroll滚动条

package GUI_3;

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

public class JScrollDemo extends JFrame{

	public JScrollDemo() {
		Container container = this.getContentPane();
		
		//文本域
		JTextArea textArea = new JTextArea(20,50);
		textArea.setText("欢迎学习Java");
		
		//Scroll面板
		JScrollPane scrollPane = new JScrollPane(textArea);//创建一个带有文本域的Scroll面板
		container.add(scrollPane);//将面板添加到容器中
		
		//JFrame 的基础设置:设置窗口大小、可见、可关闭
		this.setVisible(true);
		this.setBounds(100,100,300,400);
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
	public static void main(String[] args) {
		new JScrollDemo();

	}

}

        运行结果:文本框出现了滚动条。

【了解Java GUI编程】AWT和Swing的基本用法

 

到了这里,关于【了解Java GUI编程】AWT和Swing的基本用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java的GUI(Swing)添加背景图片

    众所周知,在Java中GUI的各种都是需要自己编写的,然后在添加背景图片的时候有时候会覆盖其他组件,所以下面具体讲述怎么插入背景图片,并且不覆盖。 直接调用以下方法即可,记得方法中的图片路径需要修改 将对应的组件设置成透明即可,如下示例 我的具体界面如下

    2024年02月12日
    浏览(43)
  • JAVA GUI 学生信息管理系统(Swing)

    一、JAVA GUI 项目介绍 ​ GUI 是指图形用户界面显示的计算机操作用户界面,GUI主要有两个核心库,分别是AWT和Swing,本项目就是使用Swing进行开发。项目基于Swing,使用JDBC操作数据库,并且在程序运行阶段创建数据库表结构信息,可做为JAVA课程实训。 容器 ​ 容器是组件的子

    2024年02月04日
    浏览(55)
  • 图书馆管理系统【GUI/Swing+MySQL】(Java课设)

    Swing窗口类型+Mysql数据库存储数据 适合作为Java课设!!! jdk1.8+Mysql8.0+Idea或eclipse+jdbc  本系统源码地址:https://download.csdn.net/download/qq_50954361/87682509 更多Java课设系统:更多Java课设系统 更多Java课设系统运行效果展示:更多Java课设系统运行效果展示  部署教程地址:Java课设部

    2023年04月19日
    浏览(45)
  • 洗浴中心管理系统【GUI/Swing+MySQL】(Java课设)

    Swing窗口类型+Mysql数据库存储数据 适合作为Java课设!!! jdk1.8+Mysql8.0+Idea或eclipse+jdbc  本系统源码地址:https://download.csdn.net/download/qq_50954361/87684292 更多Java课设系统:更多Java课设系统 更多Java课设系统运行效果展示:更多Java课设系统运行效果展示  部署教程地址:Java课设部

    2023年04月15日
    浏览(56)
  • Java学生信息管理系统(Swing<GUI>+JDBC<MySQL>)

    本文有借鉴别人的代码,但是也是自己理解之后写出来的,文中有注释,并且有个别文件也用红框和黄字体讲解,并且能解决其他文件90%看不懂的问题,如果还是看不懂清留言,源码在文章末尾,附上了全部代码,这个注册系统比较简陋,供大家学习参考。 ** 这是一个简单的

    2024年02月09日
    浏览(58)
  • java swing(GUI) MySQL实现的视频播放器系统源码+运行教程

    今天给大家演示一下由Java swing实现的一款简单的多媒体播放器,项目源码我会放在我的网站上,并配有视频配置教程,保证运行起来的。这个小播放器实现了视频、音频文件的播放、暂停、快进、快退、停止、全屏等功能,还有历史记录功能,调用的是vcl库的播放内核。接下

    2023年04月08日
    浏览(38)
  • 一文带你彻底了解java 网络编程的基本概念

    主题:探索Java网络编程:构建连接世界的桥梁 作者:Stevedash 发布日期:2023年8月11日 15点18分 (PS:这一篇文章作为总章,今天着重讲“Socket套接字编程”这里的知识,其他模块的知识,后续补上,拆分成单独章节来慢慢完善该文,并且后面会附带上其他文章的链接,会持续

    2024年02月13日
    浏览(48)
  • Android反编译 jadx-gui基本用法

    现在我们反编译一个未加固的APP,一般来说有两种方式。 一种是用Jadx-gui,优点是一个软件就帮你将所有活给干了,缺点是如果遇到较大的APP(代码加起来超过30mb的),这个软件的索引功能基本会失效,需要用Android Studio辅助。 另一种就是传统的三件套,即Apktool + dex2jar + jd

    2023年04月12日
    浏览(42)
  • 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    鼠标指针指向界面中的 Canvas 画布某个位置 , Canvas 画布中绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放 ; 使用鼠标滚轮缩放后 , 在 Canvas 中绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一

    2024年02月15日
    浏览(79)
  • 【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作

    目录  专栏导读    1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包