- 项目目标:
- 模拟实现一个简单的文本编辑器
- 掌握JPanel和常用组件、布局管理器、事件处理的用法
- 主要涉及以下知识点:
- GUI组件:JPanel、JLabel、JFrame、JRadioButton、JTextArea、JSlider等
- ButtonGroup类(即按钮组),它的作用类似于容器,可以把若干个单选按钮放到这个组里,表示这几个按钮是一组互斥的选项。当该组的一个选项被选中后,这个组里的其他选项就会被关闭。使用方法:先创建ButtonGroup类对象,然后在把要归为一组的选项使用add()方法添加进去就可以
- 事件响应:ActionListener、ChangeListener、ActionEvent等
- 需求说明:
- 设计一个简单的文字输入的界面,并添加文字颜色和字号大小的编辑按钮。根据选择的不同按钮,显示出相应的效果。除此之外,再添加一个滑块组件,根据滑块的位置变化,设置字体的大小,滑块向右字号就跟着变大,反之则变小。
- 程序图:
package JAVA2; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; public class Contest { //利用JFrame创建容器 JFrame JF = new JFrame(); ButtonGroup bt = new ButtonGroup(); //定义模块功能 JLabel ZT = new JLabel("字体大小"); JLabel YS = new JLabel("字体颜色"); JLabel HD = new JLabel("滑动标签"); JLabel HK = new JLabel("滑块的值"); JTextArea JT = new JTextArea(); JRadioButton red = new JRadioButton("红色"); JRadioButton yellow = new JRadioButton("黄色"); JRadioButton blue = new JRadioButton("蓝色"); //定义大小 JSlider jS = new JSlider(0, 100, 50); Box bo = Box.createVerticalBox(); JRadioButton jd1 = new JRadioButton("小号"); JRadioButton jd2 = new JRadioButton("中号"); JRadioButton jd3 = new JRadioButton("大号"); public void Home() { JF.pack(); JPanel jpa1 = new JPanel(); JPanel jpa2 = new JPanel(); JPanel jpa3 = new JPanel(); //利用ActionListener接口检测操作 ActionListener actionListener = e -> { String C1 = e.getActionCommand(); //利用switch语句判断c1并进行相应操作 switch (C1) { case "红色" -> JT.setForeground(Color.RED); case "蓝色" -> JT.setForeground(Color.BLUE); case "黄色" -> JT.setForeground(Color.YELLOW); case "小号" -> JT.setFont(new Font("宋体", Font.PLAIN, 10)); case "中号" -> JT.setFont(new Font("宋体", Font.PLAIN, 40)); case "大号" -> JT.setFont(new Font("宋体", Font.PLAIN, 80)); } }; //用addActionListener添加指定的动作侦听器,以接收此按钮的相应动作 red.addActionListener(actionListener); yellow.addActionListener(actionListener); blue.addActionListener(actionListener); jd1.addActionListener(actionListener); jd2.addActionListener(actionListener); jd3.addActionListener(actionListener); JF.add(JT); jpa2.add(YS); jpa3.add(HD); jpa3.add(HK); jpa1.add(ZT); jpa1.add(jd1); jpa1.add(jd2); jpa1.add(jd3); JF.add(jpa1, BorderLayout.NORTH); bt.add(jd1); bt.add(jd2); bt.add(jd3); bt.add(red); bt.add(yellow); bt.add(blue); jpa2.add(red); jpa2.add(yellow); jpa2.add(blue); jpa3.add(jS); bo.add(jpa2); bo.add(jpa3); JF.add(bo, BorderLayout.SOUTH); JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JF.setVisible(true); } public static void main(String[] args) { new Contest().Home(); } }