首页 > 编程语言 >JavaGUI实现文本转换、复制、顶置窗口等功能

JavaGUI实现文本转换、复制、顶置窗口等功能

时间:2024-04-02 22:22:38浏览次数:29  
标签:面板 转换 JavaGUI JPanel 顶置 按钮 new 文本

需求描述:

  • 实现对文本的处理,比如输入123输出 ('123')
  • 窗口顶置、取消顶置功能
  • 一键复制到剪切板

源码实现

package JavaGUI;

import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StrChange {
    public static void main(String[] args) {

        /*通用字体设置
         * */
        //按钮字体
        Font buttonFont = new Font("宋体", Font.BOLD, 16);
        //文本标签字体
        Font TexFont = new Font("黑体", Font.BOLD, 18);
        //文本域字体
        Font TextAreaFont = new Font("TimesNewRoman",Font.PLAIN,14);

        //创建Frame窗口
        JFrame jFrame = new JFrame("文本转换");
        jFrame.setBounds(20,110,530,750);
        ImageIcon icon = new ImageIcon("1.png");
        jFrame.setIconImage(icon.getImage());
        //设置窗口是否可以缩放
        jFrame.setResizable(false);
        //窗口生成在屏幕中央
        jFrame.setLocationRelativeTo(null);
        //点击退出按钮接受进程
        jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        //创建一个JPanel对象存放文本标签 --> 待转换文本
        JPanel jPanelTex1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelTex1.setBorder(new LineBorder(Color.magenta));
        jPanelTex1.setBounds(50,10,100,30);

        //文本标签 待转换文本
        JLabel jLabelTex1 = new JLabel("待转换文本");
        //设置文本标签字体
        jLabelTex1.setFont(TexFont);
        //将文本标签添加到文本标签面板
        jPanelTex1.add(jLabelTex1);


        //创建一个JPanel对象存放文本标签 --> 转换后文本
        JPanel jPanelTex2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelTex2.setBorder(new LineBorder(Color.magenta));
        jPanelTex2.setBounds(350,10,100,30);

        //文本标签 转换后文本
        JLabel jLabelTex2 = new JLabel("转换后文本");
        //设置文本标签字体
        jLabelTex2.setFont(TexFont);
        //将文本标签添加到文本标签面板
        jPanelTex2.add(jLabelTex2);

        //创建一个JPanel对象存放【文本域待转换文本】
        JPanel jPanelTexArea1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelTexArea1.setBorder(new LineBorder(Color.GREEN));
        jPanelTexArea1.setBounds(20,50,200,600);
        //让JTextArea平铺整个JPanel
        jPanelTexArea1.setLayout(new BorderLayout());

        //创建一个30行20列的【文本域待转换文本】
        JTextArea jTextArea1 = new JTextArea(30, 20);
        //将【文本域待转换文本】放入滚动窗口
        JScrollPane jScrollPane1 = new JScrollPane(jTextArea1);

        //设置文本域自动换行
        jTextArea1.setLineWrap(true);
        //设置文本域组件背景颜色
        //jTextArea1.setBackground(Color.MAGENTA);
        //设置文本域字体样式
        jTextArea1.setFont(TextAreaFont);
        jPanelTexArea1.add(jTextArea1);

        //设置滚动条面板位置和大小
        jScrollPane1.setBounds(20,50,200,600);
        //设置滚动速度
        jScrollPane1.getVerticalScrollBar().setUnitIncrement(30);
        //设置水平滚动条从不显示
        jScrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);




        //创建一个JPanel对象存放【文本域转换完文本】
        JPanel jPanelTexArea2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelTexArea2.setBorder(new LineBorder(Color.GREEN));
        //设置组件位置
        jPanelTexArea2.setBounds(300,50,200,600);
        //让JTextArea平铺整个JPanel
        jPanelTexArea2.setLayout(new BorderLayout());

        //创建一个30行20列的【文本域转换完文本】
        JTextArea jTextArea2 = new JTextArea(30, 20);
        //将【文本域转换完文本】放入滚动窗口
        JScrollPane jScrollPane2 = new JScrollPane(jTextArea2);

        //设置文本域自动换行
        jTextArea2.setLineWrap(true);
        //设置文本域组件背景颜色
        //jTextArea2.setBackground(Color.MAGENTA);
        //设置文本域字体样式
        jTextArea2.setFont(TextAreaFont);
        jPanelTexArea2.add(jTextArea2);

        //设置滚动条面板位置和大小
        jScrollPane2.setBounds(300,50,200,600);
        //设置滚动速度
        jScrollPane2.getVerticalScrollBar().setUnitIncrement(30);
        //设置水平滚动条从不显示
        jScrollPane2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);



        //创建一个JPanel对象存放【转换按钮】
        JPanel jPanelButton1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelButton1.setBorder(new LineBorder(Color.YELLOW));
        //设置组件位置
        jPanelButton1.setBounds(20,660,200,50);

        //创建转换按钮组件
        JButton ChangeButton = new JButton();
        //设置转换按钮文本
        ChangeButton.setText("转 换");
        //设置转换按钮字体
        ChangeButton.setFont(buttonFont);
        //设置转换按钮大小
        ChangeButton.setPreferredSize(new Dimension(120,40));
        //将转换按钮加载到转换按钮面板上
        jPanelButton1.add(ChangeButton);




        //创建一个JPanel对象存放【复制按钮】
        JPanel jPanelButton2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        //显示面板边框及颜色
        //jPanelButton2.setBorder(new LineBorder(Color.YELLOW));
        //设置组件位置
        jPanelButton2.setBounds(300,660,200,50);

        //创建复制按钮组件
        JButton CopyButton = new JButton();
        //设置复制按钮文本
        CopyButton.setText("复 制");
        //设置复制按钮字体
        CopyButton.setFont(buttonFont);
        //设置复制按钮大小
        CopyButton.setPreferredSize(new Dimension(120,40));
        //将复制按钮加载到转换按钮面板上
        jPanelButton2.add(CopyButton);


        //设置空布局 随意摆放组件
        jFrame.getContentPane().setLayout(null);


        //将Panel面板添加到JFrame容器中
        jFrame.getContentPane().add(jPanelTex1); //文本标签面板 待转换文本
        jFrame.getContentPane().add(jPanelTex2); //文本标签面板 转换后文本

        //添加文本域面板【待转换文本】
        jFrame.getContentPane().add(jPanelTexArea1); //文本域待转换文本
        jScrollPane1.getViewport().add(jPanelTexArea1); //将普通面板添加到滚动条面板【文本域待转换文本】
        jFrame.getContentPane().add(jScrollPane1); //文本域待转换文本滚动条


        //添加文本域面板【转换完文本】
        jFrame.getContentPane().add(jPanelTexArea2); //文本域转换完文本
        jScrollPane2.getViewport().add(jPanelTexArea2); //将普通面板添加到滚动条面板【文本域转换完文本】
        jFrame.getContentPane().add(jScrollPane2); //文本域转换完文本滚动条


        //将按钮面板添加到JFrame容器中
        jFrame.getContentPane().add(jPanelButton1); //转换按钮
        jFrame.getContentPane().add(jPanelButton2); //复制按钮

        //设置窗口是否可见
        jFrame.setVisible(true);


        //监听器将实现了ActionListener的类创建对象绑定给按钮对象
        //转换按钮
        ChangeListener changeListener = new ChangeListener();
        ChangeButton.addActionListener(changeListener);
        //复制按钮
        CopyListener copyListener = new CopyListener();
        CopyButton.addActionListener(copyListener);

        //获取待转换文本域文本
        String textArea1Text = jTextArea1.getText();
        //先赋一个空值保证输入框显示能够获取,在输入后调用getText()方法覆盖空值
        System.out.println("初始化文本" + textArea1Text);
        //将输入待转换文本域对象传给监听器
        changeListener.text = jTextArea1;
        changeListener.text2 = jTextArea2;
        System.out.println(changeListener.text2.getText());
        copyListener.text = jTextArea2;


    }

    //转换按钮监听器
    public static class ChangeListener implements ActionListener{
        JTextArea text;
        JTextArea text2;
        @Override
        public void actionPerformed(ActionEvent e) {
            //获取按钮上的字符串
            String buttonStr = e.getActionCommand();
            //验证监听器,监听点击按钮的动作事件
            System.out.println(buttonStr);
            System.out.println("转换按钮被点击");
            //获取文本域的文字
            String getTex = text.getText().trim();
            if(getTex.isEmpty()){
                JOptionPane.showMessageDialog(null,"请输入待转换文本!","警告",JOptionPane.WARNING_MESSAGE);
            }else {
                String processStr = getTex + "\n";
                String replaceStr = "(" + processStr.replaceAll("\\n","','") + ")";
                text2.setText(replaceStr);
                System.out.println(replaceStr);
            }
        }
    }

    //复制按钮监听器
    public static class CopyListener implements ActionListener{
        JTextArea text;
        @Override
        public void actionPerformed(ActionEvent e) {
            //获取按钮上的字符串
            String buttonStr = e.getActionCommand();
            //验证监听器,监听点击按钮的动作事件
            System.out.println(buttonStr);
            System.out.println("复制按钮被点击");
            //获取文本域的文字
            String getTex = text.getText().trim();
            //验证是否获取到了转换的文本域文字
            System.out.println(getTex);
            //创建焦点
            text.requestFocus();
            //选择全部
            text.selectAll();
            //复制到剪切板
            text.copy();

        }
    }
}

标签:面板,转换,JavaGUI,JPanel,顶置,按钮,new,文本
From: https://www.cnblogs.com/kunande/p/18055448

相关文章

  • 利用 Optimum Intel 和 fastRAG 在 CPU 上优化文本嵌入
    嵌入模型在很多场合都有广泛应用,如检索、重排、聚类以及分类。近年来,研究界在嵌入模型领域取得了很大的进展,这些进展大大提高了基于语义的应用的竞争力。BGE、GTE以及E5等模型在MTEB基准上长期霸榜,在某些情况下甚至优于私有的嵌入服务。HuggingFace模型hub提供了多种尺......
  • python如何处理文本错误
    在python中,如果读取的文本文件不在程序的目录中,会提示FileNotFoundError如果不能确定文本文件是否在目录中,可以用tryexcept语句代码如下frompathlibimportPathpath=Path('alice.txt')try:contents=path.read_text(encoding='utf_8')exceptFileNotFoundError:......
  • Java中如何以文本方式输出"\"
    1.转义符使用"\"在java中是一个转义符,只要有它的出现往往有他独特的意义,如下图:那么,在输出文本时,需要输出"\"怎么办呢,其实很简单,只要多加一个"\"就好啦。//此处是以文本方式输出\System.out.print("\\txasx\\");运行如下:......
  • Django 中集成 CKEditor 富文本编辑器详解
    Django中集成CKEditor富文本编辑器详解原文链接:https://blog.csdn.net/Rocky006/article/details/135130010概要在Web应用中,富文本编辑器是提高用户体验的重要组件之一。CKEditor是一款流行的、功能丰富的富文本编辑器。在Django项目中集成CKEditor不仅可以提升内容......
  • 程序运行要求,三角形三边的值来自于本地一个文本文件input.txt,三角形类型的值最终存储
    本周完成如下2个实验:面向对象数据持久化编程,使用java编写程序,完成三角形的类型判断,程序模块要求如下:创建三角形对象triangle,该对象属性有三边a,b,c,该对象有:方法1:isOutOfRange(intI,intmax),用于判断一个整数是否在(0,max)区间内(max值请各人自行设定),返回值:true-否;fal......
  • 毕业设计:基于卷积神经网络的短文本分类算法系统
    目录前言项目背景数据集设计思路更多帮助前言  ......
  • 评论文本情感分析系统-完整代码+论文+可直接运行
    视频讲解:文本情感分析系统代码+论文:基于NLP深度学习机器学习的文本情感分析系统_哔哩哔哩_bilibili项目演示:完整代码:importpandasaspdimportnumpyasnpfromcollectionsimportCounterimportreimportjiebafromtqdmimporttqdmfromsklearn.metricsimpor......
  • 评论文本情感分析系统-完整代码+论文+可直接运行 计算机毕设
     视频讲解:文本情感分析系统代码+论文:基于NLP深度学习机器学习的文本情感分析系统_哔哩哔哩_bilibili项目演示:完整代码:importpandasaspdimportnumpyasnpfromcollectionsimportCounterimportreimportjiebafromtqdmimporttqdmfromsklearn.metricsim......
  • 文本统计分析【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-文本统计分析有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量规则如下文本以";“分隔,最后一条可以没有”;",但空文本不能算语句,比如"COMMANDA;;"只能算一条语句.注意,无字符/空白字符/制表符都算作"空"文本文本可以跨行,比如下面,......
  • Vue组件封装:基于Vue3+wangeditor富文本组件二次封装
    1.简介    开源Web富文本编辑器,开箱即用,配置简单。一个产品的价值,就在于解决用户的问题,提高效率、降低成本、增加稳定性和扩展性。wangEditor不是为了做而做,也不是单纯的模仿谁,而是经过上述问题分析之后,给出一个系统的解决方案。旨在真正去解决用户的问题,产出自己的价......