常用的事件与组件

PPT


大纲视图

在这里插入图片描述


匿名内部类

没有名字,类定义和实例化同时完成,new 父类(参数列表)或接口(){…}
可以方便地访问外部类的成员在这里插入图片描述


对话框

都是Windows的子类,是顶级对话框,对话框上面没有最大化和最小化按钮
父窗口和子窗口

  • 大部分对话框都有父窗口
  • 子窗口始终显示在父窗口上
  • 父窗口关闭,子窗口一起关闭

模态与非模态

  • 模态对话框关闭前,其他窗口得不到焦点,即不可操作

在这里插入图片描述


对话框的简单实例


```java
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class JDialogDemo6618 extends JFrame {
	JPanel p1, p2;
	JButton btnMod, btnNon, btnDialog;
	JDialog modDialog, nonDialog, dialog;
	JLabel lblMessage;

	public JDialogDemo6618() {
		super("6618对话框的特点");
		this.setSize(500, 400);
		this.setLocation(200, 100);
		Font font = new Font("宋体", Font.PLAIN, 20);
		UIManager.put("Label.font", font);
		UIManager.put("Button.font", font);
		initUI6618();
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setVisible(true);
	}

	private void initUI6618() {
		p1 = new JPanel();
		String str = "<html><body><br><br>" + "1.了解对话框的父窗口与子窗口的关系<br><br>" + "2.比较模态和非模态对话框。<br> <br><br><body><html>";
		lblMessage = new JLabel(str);
		lblMessage.setFont(new Font("黑体", Font.PLAIN, 24));
		p1.add(lblMessage);
		this.add(p1);

		p2 = new JPanel();
		btnMod = new JButton("模态对话框");
		btnNon = new JButton("非模态对话框");
		btnDialog = new JButton("简单对话框");

		p2.add(btnMod);
		p2.add(btnNon);
		p2.add(btnDialog);
		this.add(p2, BorderLayout.SOUTH);

		// 创建模态对话框
		modDialog = new JDialog(this, "模态对话框", true);
		modDialog.add(new JLabel("模态对话框"));
		modDialog.setBounds(260, 140, 280, 160);

		// 创建非模态对话框
		nonDialog = new JDialog(this, "非模态对话框", false);
		nonDialog.add(new JLabel("非模态对话框"));
		nonDialog.setBounds(300, 200, 300, 200);

		// 创建非模态,无父窗口的对话框
		dialog = new JDialog();
		dialog.setTitle("简单对话框");
		dialog.add(new JLabel("简单对话框 "));
		dialog.setBounds(250, 200, 260, 180);
		dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		//模态对话框
		btnMod.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				modDialog.setVisible(true);
				
				
			}
		});
		//非模态对话框
		btnNon.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				nonDialog.setVisible(true);
			
			}
		});
		//简单对话框
		btnDialog.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				dialog.setVisible(true);
			}
		});

	}

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

}


常用组件

复选框 在这里插入图片描述

单选按钮
在这里插入图片描述

组合框
在这里插入图片描述
边框类的实现
在这里插入图片描述


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;

public class TaskButtonAndFontXXXX extends JFrame {
	private String fontName;// 当前字体的名字
	int fontStyle, fontSize;// 当前字体的字形与字号
	private String[] colors, names;// 可供选择的颜色和字体名字
	private Integer[] sizes;// 可供选择的字号
	private JPanel p, pStyle, pName, pColor;
	private JLabel lblFont;
	private JCheckBox jcbItalic, jcbBold;
	private JComboBox<Integer> jcbSize;
	private ButtonGroup gColor, gName;// 用于为RadioButton分组

	public TaskButtonAndFontXXXX() {
		super("XXXX用选择性组件修改字体");
		this.setSize(700, 400);
		this.setLocation(200, 100);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		// 设置默认字体
		fontName = "宋体";
		fontStyle = Font.PLAIN;
		fontSize = 20;
		Font font = new Font(fontName, fontStyle, fontSize);
		UIManager.put("RadioButton.font", font);
		UIManager.put("CheckBox.font", font);
		UIManager.put("ComboBox.font", font);
		UIManager.put("Label.font", font);

		initUIXXX();
		eventHandlerXXXX();
		this.setVisible(true);
	}

	private void initUIXXX() {
		lblFont = new JLabel("按钮组件是抽象类AbstractButton的子类", JLabel.CENTER);
		this.add(lblFont);

		// 字体名与颜色的两组RadioButton
		addNameXXXX();
		addColorXXXX();

		// 字形
		pStyle = new JPanel();
		pStyle.setBorder(new TitledBorder("字形"));
		jcbItalic = new JCheckBox("钭体");
		jcbBold = new JCheckBox("加粗");
		pStyle.add(jcbItalic);
		pStyle.add(jcbBold);

		// 字号
		sizes = new Integer[] { 10, 12, 14, 20, 28, 30, 36, 40 };
		jcbSize = new JComboBox<Integer>(sizes);
		jcbSize.setBorder(new TitledBorder("字号"));
		// 设置初始状态
		jcbSize.setSelectedIndex(3);

		p = new JPanel();
		p.add(pName);
		p.add(pStyle);
		p.add(pColor);
		p.add(jcbSize);

		this.add(p, BorderLayout.SOUTH);

	}

	private void addNameXXXX() {
		// 内部监听类
		ActionListener listener = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// 根据文本选择字体
				String str = e.getActionCommand();
				lblFont.setFont(new Font(str, 01, 32));
			}
		};
		// 一组RadioButton,设置可选的字体名称

		JRadioButton radioButton = null;
		names = new String[] { "黑体", "隶书", "宋体" };
		pName = new JPanel();
		pName.setBorder(new TitledBorder("字体"));
		gName = new ButtonGroup();
		// 用循环来减少代码量
		for (String text : names) {
			radioButton = new JRadioButton(text);
			radioButton.addActionListener(listener);
			pName.add(radioButton);
			gName.add(radioButton);// 字体名称的RadioButton放在同一组中
		}
		// 设置初始状态
		radioButton.setSelected(true);
	}

	private void addColorXXXX() {
		// 内部监听类
		ActionListener listener = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 根据文本选择颜色
				String str = e.getActionCommand();
				Color color = null;
				switch (str) {
				case "红":
					color = Color.red;
					break;
				case "兰":
					color = Color.blue;
					break;
				case "黄":
					color = Color.yellow;
					break;
				case "黑":
					color = Color.black;
					break;
				}

				lblFont.setForeground(color);

			}
		};
		// 一组RadioButton,设置可选的颜色
		// 用数组和循环,减少代码量,使代码更简洁
		colors = new String[] { "红", "兰", "黄", "黑" };
		JRadioButton radioButton = null;
		pColor = new JPanel();
		pColor.setBorder(new TitledBorder("颜色"));
		gColor = new ButtonGroup();
		for (String text : colors) {
			radioButton = new JRadioButton(text);
			radioButton.addActionListener(listener);
			pColor.add(radioButton);
			gColor.add(radioButton);

			// 颜色的RadioButton放在同一组中
		}
		// 初始状态
		radioButton.setSelected(true);

	}

	private void eventHandlerXXXX() {
		ActionListener listener = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				//获取字体号
				Object num =jcbSize.getSelectedItem();
				
				int mode = 0;

				// 如果选择斜体
				if (jcbBold.isSelected()) {
					mode += Font.BOLD;
				}
				// 如果选择加粗
				if (jcbItalic.isSelected()) {
					mode += Font.BOLD;

				} // 斜体和加粗可以按二进制叠加
				lblFont.setFont(new Font("微软雅黑", mode, (int) num));

			}
		};

		// 添加监听对象
		jcbBold.addActionListener(listener);
		jcbItalic.addActionListener(listener);
		jcbSize.addActionListener(listener);
	}

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

```java


下拉菜单

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值