基本的JavaAWT

本文介绍了Java AWT包,它是Java GUI编程的基础,包括组件、容器和布局管理器的使用。通过实例展示了如何创建和运行一个简单的GUI程序。

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

java.awt包提供了基本的GUI设计工具,主要包括组件(Component)、容器(Container)和布局管理器(LayoutManager)。

案例:

public class JavaAWT1 extends JFrame{
	/**
	 * Jpanel要依附于JFrame存在,可直接加其他组件,而JFrame可单独存在,但需要通过内容窗格添加其他组件
	 * JFrame是人;JPanel是人体的器官,必须依赖人存在,且不能对外表露出来,必须通过JFrame表示出来
	 * JFrame:添加组件是先通过add方法添加到内容窗格再放到frame中(内容窗格是一个透明的没有边框的中间容器。)
	 * JPanel:中间级,要置于其他组件之下,同时又可容纳组件并将之组合起来(这就是中间容器)
	 * 
	 * JFrame中会默认new一个JPanel,塞入JFrame中。
	 * JFrame是一个底层框架类,好比一个窗户的框子,也是一个容器,这个框子可以嵌入几个玻璃窗
	 * JPanel是一个容器类,相当于一个大玻璃窗
	 * JLabel等一些基本组件,必须置于某个容器里,类似于窗花,剪纸必须置于窗户的表面
	 * */
	private static int currentProgress = 0;
	public JavaAWT1() {
		// 面板
        JPanel p1 = new JPanel();
        add(p1);
        
        // 标签
        JLabel name = new JLabel("用户名:");
        p1.add(name);

        // 文本域
        JTextField field = new JTextField(8);//单行文本输入框
        p1.add(field);

        // 标签
        JLabel passwd = new JLabel("密码");
        p1.add(passwd);
        // 密码域
        JPasswordField pass = new JPasswordField(8);
        p1.add(pass);

        // 单选按钮
        JLabel gender = new JLabel("性别");
        p1.add(gender);
        JRadioButton male = new JRadioButton("男");
        JRadioButton female = new JRadioButton("女");

        ButtonGroup group = new ButtonGroup();// 单选按钮组,同一个单选按钮组的互斥.(与复选框的区别)
        group.add(male);
        group.add(female);
        // 注意,单选按钮组(group)不能添加进容器
        p1.add(male);
        p1.add(female);

        // 复选框
        JLabel like = new JLabel("爱好:");
        p1.add(like);
        JCheckBox eat = new JCheckBox("吃饭");
        JCheckBox movie = new JCheckBox("看电影");
        JCheckBox sleep = new JCheckBox("睡觉");
        p1.add(eat);
        p1.add(movie);
        p1.add(sleep);

        // 文本域
        JLabel info = new JLabel("个人简介");
        p1.add(info);
        JTextArea area = new JTextArea(20, 20);//多行文本输入框
        area.setLineWrap(true);//激活自动换行功能
        area.setWrapStyleWord(true);//激活断行不断字功能
        //这三个方法搭配使用才能体现多行文本框与单行文本框的区别
        p1.add(area);

        // 列表
        String[] data = { "one", "two", "three" };
        JList list = new JList(data);
        p1.add(list);

        //下拉列表
        JComboBox cb=new JComboBox(data);
        p1.add(cb);
        
        // 普通按钮
        JButton button = new JButton("注册");
        p1.add(button);

        // 菜单条
        JMenuBar bar = new JMenuBar();
        // 菜单
        JMenu menu = new JMenu("文件");
        // 菜单选项
        JMenuItem myNew = new JMenuItem("新建");
        JMenuItem myOpen = new JMenuItem("打开");
        bar.add(menu);
        menu.add(myNew);
        menu.add(myOpen);
        add(bar, BorderLayout.NORTH);
        
        //滑块
        final JSlider slider=new JSlider(0, 20, 10);
        slider.setMajorTickSpacing(5);// 设置主刻度间隔
        slider.setMinorTickSpacing(1);// 设置次刻度间隔
        slider.setPaintTicks(true);// 绘制刻度 
        slider.setPaintLabels(true);// 绘制标签
        p1.add(slider);
        
        //进度条
        final JProgressBar progressBar=new JProgressBar();
        progressBar.setMinimum(0);// 设置进度的最小值
        progressBar.setMaximum(100);// 设置进度的最大值
        progressBar.setValue(0);// 设置当前进度值
        progressBar.setStringPainted(true);// 绘制百分比文本(进度条中间显示的百分数)
        p1.add(progressBar);
        new Timer(500, new ActionListener() {// 模拟延时操作进度, 每隔 0.5 秒更新进度
			@Override
			public void actionPerformed(ActionEvent e) {
				currentProgress++;
				if(currentProgress>100) {
					currentProgress=0;
				}
				progressBar.setValue(currentProgress);
			}
		}).start();
	}
	
	public static void main(String[] args) {
		JavaAWT1 frame = new JavaAWT1();
        frame.setTitle("常用组件");
        frame.setSize(400, 400);//设置窗体的大小
        frame.setLocationRelativeTo(null);//设置窗体的初始位置(默认是中央)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 自适应
        frame.pack();
        frame.setVisible(true);//设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界面就没有如何意义了
	}
}

运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝朋友丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值