Java GUI 实现一个简单的字符串转换器

用户通过界面输入一串英文字符串,然后选择所需要的转换器对输入字符串进行转换。
可供选择的转换器有3个:转换为大写、转换为小写以及去除空格前缀。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;

public class StringConverterFrame {
    private final JFrame jf = new JFrame("字符串变换器");
    private final JLabel label1 = new JLabel("源字符串:");
    private final JLabel label2 = new JLabel("变换结果:");
    private final JLabel label3 = new JLabel("可用变换器:",JLabel.LEFT);
    private final JLabel label4 = new JLabel("变换器链:",JLabel.LEFT);
    private final JTextField srcStrText = new JTextField();
    private final JTextField dstStrText = new JTextField();

    private JList<String> listLeft;
    private JList<String> listRight;
    private final DefaultListModel<String> modelLeft = new DefaultListModel<>();
    private final DefaultListModel<String> modelRight = new DefaultListModel<>();

    private final JPanel pnSouth = new JPanel();
    private final JPanel pnCCenter = new JPanel();
    private final JPanel pnCenter = new JPanel();
    private final JPanel pnWest = new JPanel();
    private final JPanel pnEast = new JPanel();
    private final JPanel pnNorth = new JPanel();

    private final FlowLayout flowLayout = new FlowLayout(FlowLayout.RIGHT,10,10);
    private final JButton btnAdd = new JButton("增加>>");
    private final JButton btnDelete = new JButton("去除");
    private final JButton btnDelAll = new JButton("全部去除");
    private final JButton btnApply = new JButton("应用");
    private final JButton btnExit = new JButton("退出");

    public void init(){

        modelLeft.addElement("转换为大写");
        modelLeft.addElement("转换为小写");
        modelLeft.addElement("去除前缀空格");
        listLeft = new JList<>(modelLeft);
        listRight = new JList<>(modelRight);
        btnAdd.addActionListener(actionEvent -> btnAddPerformed(actionEvent));
        btnDelete.addActionListener(actionEvent -> btnDeletePerformed(actionEvent));
        btnDelAll.addActionListener(actionEvent -> btnDeleteAllPerformed(actionEvent));

        pnNorth.setLayout(null);
        pnNorth.add(label1);
        pnNorth.add(srcStrText);
        pnNorth.add(label2);
        pnNorth.add(dstStrText);
        pnNorth.setPreferredSize(new Dimension(600,80));
        label1.setBounds(15,10,100,20);
        label2.setBounds(15,50,100,20);
        srcStrText.setBounds(120,10,600,20);
        dstStrText.setBounds(120,50,600,20);
        jf.add(pnNorth,BorderLayout.NORTH);

        pnWest.setLayout(null);
        pnWest.add(label3);
        pnWest.add(listLeft);
        label3.setBounds(20,20,120,18);
        listLeft.setBounds(20,50,120,200);
        pnWest.setPreferredSize(new Dimension(220,220));

        pnCenter.add(btnAdd);
        pnCenter.add(btnDelete);
        pnCenter.add(btnDelAll);
        pnCenter.setLayout(null);
        btnAdd.setBounds(40,60,100,30);
        btnDelete.setBounds(40,120,100,30);
        btnDelAll.setBounds(40,180,100,30);
        pnCenter.setPreferredSize(new Dimension(220,220));

        pnEast.add(label4);
        pnEast.add(listRight);
        pnEast.setLayout(null);
        label4.setBounds(60,20,120,18);
        listRight.setBounds(60,50,120,200);
        pnEast.setPreferredSize(new Dimension(220,220));

        jf.add(pnCCenter,BorderLayout.CENTER);
        pnCCenter.add(pnWest);
        pnCCenter.add(pnCenter);
        pnCCenter.add(pnEast);

        jf.add(pnSouth,BorderLayout.SOUTH);
        pnSouth.add(btnApply);
        pnSouth.add(btnExit);
        btnApply.addActionListener(actionEvent -> btnApplyPerformed(actionEvent));
        btnExit.addActionListener(actionEvent -> System.exit(0));

        pnSouth.setAlignmentY((float) 0.5);
        pnSouth.setBorder(null);
        pnSouth.setLayout(flowLayout);

        btnApply.setPreferredSize(new Dimension(80, 23));
        btnExit.setPreferredSize(new Dimension(80,23));

        jf.pack();
        jf.setSize(800,420);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        jf.setResizable(true);
    }
    private void btnAddPerformed(ActionEvent actionEvent){
        int index = listLeft.getSelectedIndex();
        String s = listLeft.getSelectedValue();
        if(index != -1 && !modelRight.contains(s)){
            modelRight.addElement(s);
        }
    }

    private void btnDeletePerformed(ActionEvent actionEvent){
        if(listRight.getSelectedIndex() != -1){
            modelRight.remove(listRight.getSelectedIndex());
        }
    }

    private void btnDeleteAllPerformed(ActionEvent actionEvent){
        modelRight.removeAllElements();
    }

    private void btnApplyPerformed(ActionEvent actionEvent){
        String srcStr = srcStrText.getText();
        for(int i=0;i<listRight.getModel().getSize();i++){
            String operation = listRight.getModel().getElementAt(i);
            srcStr = operForStr(srcStr,operation);
        }
        dstStrText.setText(srcStr);
    }

    private String operForStr(String str,String oper){
        switch(oper){
            case "转换为大写" :  str = str.toUpperCase();break;
            case "转换为小写" : str = str.toLowerCase();break;
            case "去除前缀空格" : str = str.trim();break;
            default:break;
        }
        return str;
    }

    public static void main(String[] args){
        new StringConverterFrame().init();
    }
}

实现效果图:
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsws100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值