Java图形化界面基本案例

news2024/11/19 10:48:58

案例:

public class exer1 {
    JFrame s=new JFrame("练习");

    //菜单
    JMenuBar jMenuBar=new JMenuBar();
    JMenu wenjian=new JMenu("文件");
    JMenu bianji=new JMenu("编辑");

    JMenuItem zidong=new JMenuItem("自动换行");
    JMenuItem fuzhi=new JMenuItem("复制");
    JMenuItem zhantie=new JMenuItem("粘贴");

    JMenu geshi=new JMenu("格式");
    JMenuItem zhushi=new JMenuItem("注释");
    JMenuItem quxiao=new JMenuItem("取消注释");

    //文本域
    JTextArea text=new JTextArea(10,30);
    //列表
    String[] ss={"红色","白色","紫色"};
    JList<String> colorlist=new JList<>(ss);
    //组件
    JComboBox<String> colorselect=new JComboBox<>(ss);

    ButtonGroup bg=new ButtonGroup();
    JRadioButton b1=new JRadioButton("男",true);//默认选中
    JRadioButton b2=new JRadioButton("女",false);

    //复选框
    JCheckBox checkBox=new JCheckBox("是否已婚",true);

    //最下方
    JTextField tf=new JTextField(40);
    JButton button=new JButton("确定",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\src\\ok.png"));

    //声明鼠标右键点击的菜单
    JPopupMenu popupMenu=new JPopupMenu();
    ButtonGroup bb=new ButtonGroup();
    JRadioButtonMenuItem metal=new JRadioButtonMenuItem("metal风格");
    JRadioButtonMenuItem nimbus=new JRadioButtonMenuItem("nimbus风格");
    JRadioButtonMenuItem windows=new JRadioButtonMenuItem("windows风格");
    JRadioButtonMenuItem windoowsclassic=new JRadioButtonMenuItem("windows经典风格");
    JRadioButtonMenuItem motif=new JRadioButtonMenuItem("motif经典风格");

    public void init(){
        //开始组装
        JPanel p1=new JPanel();
        p1.add(tf);
        p1.add(button);
        s.add(p1,BorderLayout.SOUTH);

        //关于选择的组件
        JPanel selectpanel=new JPanel();
        selectpanel.add(colorselect);

        bg.add(b1);
        bg.add(b2);
        selectpanel.add(b1);
        selectpanel.add(b2);
        selectpanel.add(checkBox);

        //文本域和选择相关
        Box topleft=Box.createVerticalBox();
        topleft.add(text);
        topleft.add(selectpanel);
        //组装顶部
        Box top=Box.createHorizontalBox();
        top.add(topleft);
        top.add(colorlist);
        s.add(top);

        //开始组装顶部菜单
        geshi.add(zhushi);
        geshi.add(quxiao);
        bianji.add(zidong);
        //加横线
        bianji.addSeparator();
        bianji.add(fuzhi);
        bianji.add(zhantie);
        //加横线
        bianji.addSeparator();
        bianji.add(geshi);
        jMenuBar.add(wenjian);
        jMenuBar.add(bianji);
        s.setJMenuBar(jMenuBar);

        //组装鼠标右键菜单
        popupMenu.add(metal);
        popupMenu.add(nimbus);
        popupMenu.add(windows);
        popupMenu.add(windoowsclassic);
        popupMenu.add(motif);

        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //当前选择的是哪种风格
                String ss=e.getActionCommand();
                try {
                    change(ss);
                } catch (UnsupportedLookAndFeelException unsupportedLookAndFeelException) {
                    unsupportedLookAndFeelException.printStackTrace();
                } catch (ClassNotFoundException classNotFoundException) {
                    classNotFoundException.printStackTrace();
                } catch (InstantiationException instantiationException) {
                    instantiationException.printStackTrace();
                } catch (IllegalAccessException illegalAccessException) {
                    illegalAccessException.printStackTrace();
                }
            }
        };
        metal.addActionListener(listener);
        nimbus.addActionListener(listener);
        windows.addActionListener(listener);
        windoowsclassic.addActionListener(listener);
        motif.addActionListener(listener);

        popupMenu.add(metal);
        popupMenu.add(nimbus);
        popupMenu.add(windows);
        popupMenu.add(windoowsclassic);
        popupMenu.add(motif);

        //添加在文本区域右键出现菜单,这个不用在判断,直接设置即可
        text.setComponentPopupMenu(popupMenu);

        //关闭程序
        s.setDefaultCloseOperation(3);

        s.pack();
        s.setVisible(true);


    }
    private void change(String command) throws UnsupportedLookAndFeelException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        //定义的这个方法用来改变界面风格
        switch (command){
            case "metal风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "nimbus风格":
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                break;
            case "windows风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                break;
            case "windows经典风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
                break;
            case "motif风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                break;
        }
        //刷新组件的外观
        SwingUtilities.updateComponentTreeUI(s.getContentPane());
        SwingUtilities.updateComponentTreeUI(popupMenu);
        SwingUtilities.updateComponentTreeUI(jMenuBar);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1419042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

斜率优化dp模型整理

300. 任务安排1&#xff08;300. 任务安排1 - AcWing题库&#xff09; 思路&#xff1a;很明显这些任务是按顺序排好的&#xff0c;我们能执行的操作只是对它们进行分批&#xff0c;我们可以发现每一批之前的开始时间s&#xff0c;影响的不仅仅是当前这一批的结束时间&#xff…

Java强训day9(选择题编程题)

选择题 class Person {String name "No name";public Person(String nm) {name nm;} } class Employee extends Person {String empID "0000";public Employee(String id) {super(" ");//要调用父类的有参构造方法否则报错empID id;} } pu…

常用芯片学习——AMS1117芯片

AMS1117 1A 低压差线性稳压器 使用说明 AMS1117 是一款低压差线性稳压电路&#xff0c;该电路输出电流能力为1A。该系列电路包含固定输出电压版本和可调输出电压版本&#xff0c;其输出电压精度为士1.5%。为了保证芯片和电源系统的稳定性&#xff0c;XBLWAMS1117 内置热保护和…

秋招面试—浏览器原理篇

浏览器原理篇 1.什么是XSS、CSRF,怎么预防&#xff1f; &#xff08;1&#xff09;XSS(跨站脚本攻击)&#xff1a;攻击者将恶意代码植入到浏览器页面中&#xff0c;盗取存储在客户端的Cookie&#xff1b; ​ XSS分为&#xff1a;①存储型&#xff1a;论坛发帖、商品评论、用户…

大型电商系统商城源码_架构_订单系统_OctShop

中国的电商差不多发展到今天已经有20多年的历史啦&#xff0c;特别是过去的10年里其发展速度与竞争是相当的激烈&#xff0c;发展出了各种各样的模式如&#xff1a;B2B、B2C、B2B2C、O2O、社交电商等等。对于广大的企业或商家来说&#xff0c;电商是一个不可或缺的销售渠道&…

猫咪不吃东西怎么办?公认适口性好的生骨肉冻干分享

猫咪不吃东西怎么办&#xff1f;遇到这类情况主人需要仔细观察并分析情况。如果猫咪出现其他异常症状&#xff0c;如呕吐、腹泻、体温异常等&#xff0c;可能是生病了&#xff0c;应及时就医。如果猫咪没有其他异常症状&#xff0c;那猫咪不吃东西怎么办&#xff1f;可能是猫粮…

JAVA多线程并发补充

AQS 是一个抽象父类 全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架。 用 state 属性来表示资源的状态&#xff08;分独占模式和共享模式&#xff09;&#xff0c;子类需要定义如何维护这个状态&#xff0c;控制如何获取锁和释放锁 getSt…

Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?

本文九河云介绍Windows实例内部自定义域名解析与本地网络域名解析不一致导致无法访问网站的问题描述、问题原因和解决方案。 问题描述 在Windows实例内部通过浏览器无法访问某网站&#xff0c;但在其他设备上可以正常访问&#xff0c;排查发现Windows实例内部自定义域名解析与…

6.s081 学习实验记录(三)system calls

文章目录 一、use gdb二、syscall&#xff1a;trace注意&#xff1a;实验代码&#xff1a;实验结果&#xff1a; 三、sysinfotips&#xff1a;实验代码实验结果 需要切换到 syscall 分支 一、use gdb 学习使用 gdb 调试 make qemu-gdb打开一个新的终端&#xff1a; gdb-mult…

Selenium教程11:模拟账号密码,自动登入qq空间

Python爬虫教程30&#xff1a;Selenium网页元素&#xff0c;定位的8种方法&#xff01; Selenium自动化教程02&#xff1a;浏览器options配置及常用的操作方法 Selenium自动化教程03&#xff1a;延时等待的3种方式 Selenium自动化教程04&#xff1a;鼠标键盘网页的模拟操作 …

文件的相关概念及用法

文件的作用 程序运行时产生的数据都属于临时文件&#xff0c;程序一旦运行结束就会被释放。若想让数据保存下来&#xff0c;则可以通过文件将数据持久化 文件需要包含的头文件<fstream>(文件流) 文件分类 文件分为文本文件和二进制文件。 文本文件&#xff1a;文件以…

快速上手Git

目录 一、Git概述 二、Git的常用命令 Git全局配置 获取Git仓库 基本概念 本地仓库操作 远程仓库操作 分支操作 标签操作 三、在IDEA中使用Git 在IDEA中配置Git 本地仓库操作 远程仓库操作 分支操作 冲突解决 一、Git概述 Git是一个分布式版本控制工具&…

探索设计模式的魅力:深入了解适配器模式-优雅地解决接口不匹配问题

设计模式专栏&#xff1a;http://t.csdnimg.cn/nolNS 目录 一、引言 1. 概述 2. 为什么需要适配器模式 3. 本文的目的和结构 二、简价 1. 适配器模式的定义和特点 定义 特点 2. 适配器模式的作用和适用场景 作用 适用场景 3. 适配器模式与其他设计模式的比较 三、适配…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统&#xff0c;具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

代码随想录算法刷题训练营day18

代码随想录算法刷题训练营day18&#xff1a;LeetCode(257)二叉树的所有路径、LeetCode(404)左叶子之和 LeetCode(257)二叉树的所有路径 题目 代码 import java.util.ArrayList; import java.util.List;/*** Definition for a binary tree node.* public class TreeNode {* …

媒体邀约:怎么吸引总体目标受众?

新闻媒体影响力日益扩大。不论是公司、机构还是其他&#xff0c;都希望能够通过新闻媒体的曝光来吸引更多总体目标受众。要想真正吸引住总体目标受众并非易事&#xff0c;需要一定的方案和方法。下面我们就深入探究媒体邀约推广的真相&#xff0c;共享怎么吸引总体目标受众的方…

挂耳耳机哪个牌子好?挂耳耳机产品的几大推荐

如果你也是个运动爱好者&#xff0c;那你一定知道边运动边听歌是多么的提神! 我试过好多种耳机&#xff0c;那些长长的线总在运动时不断甩来甩去&#xff0c;真是让人烦不胜烦。而且戴久了耳朵里也不舒服。所以找一款真正适合运动的挂耳耳机太重要了&#xff0c;它能让你的运动…

【Docker】docker Overlay2 文件系统原理

概述 overlayFS是被称为联合文件系统的其中一个解决方案。在2014年&#xff0c;发布了第一个版本并且合并到了Linux的内核3.18版本中&#xff0c;此时&#xff0c;在docker被称为是overlay文件驱动。后来在Linux 内核4.0 版本中进行了改进&#xff0c;称为overlay2。&#xff…

模拟堆

import java.util.Scanner;public class Main{static int N 100010, size,m;static int[] h new int[N]; //h[i]表示下标i这个点是第多少static int[] hp new int[N]; //hp[i]表示下标为i的节点是第几个被加进来的static int[] ph new int[N]; //ph[i]表示第i个加进来…