首页 > 编程语言 >Java:实验四 Java图形界面与事件处理(头歌)

Java:实验四 Java图形界面与事件处理(头歌)

时间:2024-04-28 12:11:06浏览次数:25  
标签:事件处理 Java String 图形界面 JPanel else add new panel

image

image

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
 
/**
 * Created by IntelliJ IDEA.
 *
 * @Author :
 * @create: 2023/03/29 10:15
 */
public class ArtFont extends JFrame implements ActionListener, ItemListener {
    JComboBox fontType;//字体样式下拉框
    JComboBox fontSize;//字体大小下拉框
    JComboBox windowStyle;//窗体样式下拉框
    JCheckBox boldBx;// 粗体按钮
    JCheckBox italicBx;// 斜体按钮
    JButton colorBtn;// 颜色按钮;
    String[] fontNames;// 字体名称;
    String[] fontSizes;// 字体大小;
    JLabel label;// 输入提示标签;
    JTextField inputText;// 文字输入框;
    JTextArea txtArea;// 文字显示区;
    JPanel northPanel;// 字体设置;
    JPanel centerPanel;// 显示效果区
    JPanel southPanel;//样式设置
    Font font;
    int boldStyle, italicStyle, underlineStyle;
    int fontSizeStyle;
    String fontNameStyle;
    Color colorStyle = Color.black;// 设置字体的默认颜色为黑色;
    String[] style = { "默认显示效果", "Windows显示效果", "Unix显示效果" };
 
    public ArtFont() {
        super("字体设置");
        // 设置默认字体
        boldStyle = 0;
        italicStyle = 0;
        underlineStyle = 0;
        fontSizeStyle = 10;
        fontNameStyle = "宋体";
        font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
 
        northPanel = getNorthPanel();
        centerPanel = getCenterPanel();
        southPanel = getSouthPanel();
        // 设置容器;
        Container container = getContentPane();
        container.setLayout(new BorderLayout());
 
        //将northPanel添加到窗体的北部
        container.add(northPanel, BorderLayout.NORTH);
 
        //将centerPanel添加到窗体的中部
        container.add(centerPanel, BorderLayout.CENTER);
 
        //将southPanel添加到窗体的南部
        container.add(southPanel, BorderLayout.SOUTH);
 
        setSize(500, 300);
        //将窗体位于屏幕的中央
        this.setLocationRelativeTo(null);
 
        setVisible(true);
    }
 
    private JPanel getNorthPanel() {
        JPanel panel = new JPanel();
        label = new JLabel("输入");
        inputText = new JTextField(10);
        boldBx = new JCheckBox("粗体");
        italicBx = new JCheckBox("斜体");
        colorBtn = new JButton("颜色");
 
        panel.add(label);
        panel.add(inputText);
        panel.add(boldBx);
        panel.add(italicBx);
        panel.add(colorBtn);
          /***  
 
 
 
 
        在下面括号中改名字
        JTextArea("计xxxx xxxxxxxx xx")
   
 
 
 
 
             ***/
        JTextArea textArea=	new JTextArea("计xxxx xxxxxxxx xx");
        //注册事件监视器
        inputText.addActionListener(this);
        colorBtn.addActionListener(this);
        boldBx.addItemListener(this);
        italicBx.addItemListener(this);
        panel.add(textArea);
        return panel;
    }
 
 
 
    private JPanel getCenterPanel() {
        JPanel panel = new JPanel();
        txtArea =  new JTextArea();
        panel.setLayout(new BorderLayout());
        panel.add(new JScrollPane(txtArea), BorderLayout.CENTER);
 
        return panel;
    }
 
    private JPanel getSouthPanel() {
        JPanel panel = new JPanel();
        //获得系统默认字体
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        fontNames = ge.getAvailableFontFamilyNames();
        fontType = new JComboBox(fontNames);
        //设置字体大小
        fontSizes = new String[63];
        for (int i = 0; i < fontSizes.length; i++) {
            fontSizes[i] = Integer.toString(i+10);
        }
        fontSize = new JComboBox(fontSizes);
        windowStyle = new JComboBox(style);
 
        panel.add(fontType);
        panel.add(fontSize);
        panel.add(windowStyle);
        //注册事件监视器
        fontType.addItemListener(this);
        fontSize.addItemListener(this);
        windowStyle.addItemListener(this);
 
        return panel;
    }
    public static void main(String args[]) {
        ArtFont artFont = new ArtFont();
        artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
 
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == inputText) {
            txtArea.setText(inputText.getText());
        } else if (e.getSource() == colorBtn) {
            colorStyle=JColorChooser.showDialog(this,"请选择一种颜色",colorStyle);
            colorBtn.setForeground(colorStyle);
            txtArea.setForeground(colorStyle);
        }
    }
 
    @Override
    public void itemStateChanged(ItemEvent e) {
        if (e.getSource() == boldBx) {
            if (boldBx.isSelected()){
                boldStyle=Font.BOLD;
            }else {
                boldStyle=Font.PLAIN;
            }
 
        } else if (e.getSource() == italicBx) {
            if (italicBx.isSelected()){
                italicStyle=Font.ITALIC;
            }else {
                italicStyle=Font.PLAIN;
            }
 
        } else if (e.getSource() == fontType) {
            fontNameStyle=(String) e.getItem();
 
        } else if (e.getSource() == fontSize) {
            fontSizeStyle=Integer.parseInt((String) e.getItem());
 
        } else if (e.getSource() == windowStyle) {
            String s = (String) e.getItem();
            String className = "";
            if (s.equals("Windows显示效果"))
                className = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
            else if (s.equals("Unix显示效果"))
                className = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
            else if (s.equals("默认显示效果"))
                className = UIManager.getCrossPlatformLookAndFeelClassName();
            try {
                UIManager.setLookAndFeel(className);
                SwingUtilities.updateComponentTreeUI(this);
            } catch (Exception de) {
                System.out.println("Exception happened!");
            }
        }
        font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);
        txtArea.setFont(font);
    }
 
}

标签:事件处理,Java,String,图形界面,JPanel,else,add,new,panel
From: https://www.cnblogs.com/whwh/p/18163445

相关文章

  • 揭秘JavaScript数据世界:一文通晓基本类型和引用类型的精髓!
    在编程的世界里,数据是构建一切的基础。就像建筑师需要了解不同材料的强度和特性一样,程序员也必须熟悉各种数据类型。今天,我们就来深入探讨JavaScript中的数据类型,看看它们如何塑造我们的代码世界。一、JavaScript数据类型简介数据类型是计算机语言的基础知识,数据类型广泛用于变......
  • Java面试题:你知道Spring的IOC吗?那么,它为什么这么重要呢?
    Spring的IOC(控制反转)是一种设计模式,它允许开发者将对象的创建和管理交给Spring框架来完成。在Spring中,IOC允许开发者将对象依赖关系从代码中分离出来,从而使代码更加灵活、可重用和易于管理。IoC全称InverseofControl(反向控制或控制反转)。在类和类之间存在控制权,控制权指的是......
  • Java中的读写锁ReentrantReadWriteLock详解,存在一个小缺陷
    写在开头最近是和java.util.concurrent.locks包下的同步类干上了,素有并发根基之称的concurrent包中全是精品,今天我们继续哈,今天学习的主题要由一个大厂常问的Java面试题开始:小伙子,来说一说Java中的读写锁,你都用过哪些读写锁吧?这个问题小伙伴们遇到了该如何回答呢?心里琢磨去......
  • 短视频开发,如何用Java实现短信验证码?
    背景Java是一种短视频开发时比较流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我用Java实现短信验证码的总结。截图展示实现代码短视频开发后台接收前台的kgCaptchaToken进行验证,验证成功执行成功......
  • [Java]线程生命周期与线程通信
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18162522出自【进步*于辰的博客】线程生命周期与进程有诸多相似,所以我们很容易将两者关联理解并混淆,一些细节之处确有许多不同,因为线程调度与进程调度虽都由CPU完成,但两者并......
  • Java 多线程初步总结
    Java多线程程序,进程,线程的基本概念:程序:是为了完成特定的任务,使用某种语言编写的一组指令的集合,是一段静态的代码,静态对象,如Excel,World等。进程:是程序的一次执行多次,或者是正在运行的一个程序,是一个动态的过程,有自身的产生,存在和消亡的过程,即存在生命周期。线程:进程可以进一步......
  • java中的内部类
    java中的内部类目录java中的内部类1.定义2.分类非静态成员式的内部类局部内部类匿名内部类静态成员式内部类总结1.定义内部类是一个定义在另一个类中的类内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性2.分类非静态成员式的内部类非静态成员式内部类可......
  • Java(3)-POJO和Java bean的区别是什么
    POJO(PlainOldJavaObject)和JavaBean是两个密切相关但有细微差别的概念,在Java编程中经常被提及。这两者之间的主要区别在于它们的用途和设计要求。首先简单地介绍POJO是什么,POJO是"PlainOldJavaObject"的缩写,指的是一个普通的Java对象,它不依赖于特定的Java框架,也......
  • 在html中应用JavaScript
    1.在html中调用jsjs需要用<script>脚本写入位置</script>声明;也可以用外部文件引入,如<scripttype="text/javascript"src="script1.js"></script>。当js位于html的<head>内:这些脚本在选择触发它的时候被触发当js位于html的<body>内:这些脚本在页面加载时触发2.js的数据类......
  • Java(1)-粗解动态绑定
    Java的动态绑定机制是OOP中一个非常核心的概念。要理解动态绑定需要从Java的对象和类说起。当我们在创建一个类的时候,实际上就是在定义一种新的数据类型。类中可以包含属性和方法,基于这个类创建一个对象的时候,这个对象就有拥有该类所有的属性和方法。在引出动态绑定的概念之前,可......