用户通过界面输入一串英文字符串,然后选择所需要的转换器对输入字符串进行转换。
可供选择的转换器有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();
}
}
实现效果图: