Java实战之亲戚关系计算器(swing版)(5)——回退及清空功能

编程入门 行业动态 更新时间:2024-10-09 15:22:01

Java实战之亲戚关系<a href=https://www.elefans.com/category/jswz/34/1765079.html style=计算器(swing版)(5)——回退及清空功能"/>

Java实战之亲戚关系计算器(swing版)(5)——回退及清空功能

实现点击称谓按钮功能

在map包目录下创建NameProperty.java类,其内容如下:

package map;import javax.swing.*;
import java.util.HashMap;
import java.util.Map;public class NameProperty {Map<String, String> map = null;/*** 操作结果:根据传入的按钮获得其称呼** @param button* @return*/public String getNameByButton(JButton button) {map = new HashMap<String, String>();map.put("父", "爸爸");map.put("母", "妈妈");map.put("夫", "老公");map.put("妻", "老婆");map.put("子", "儿子");map.put("女", "女儿");map.put("兄", "哥哥");map.put("弟", "弟弟");map.put("姐", "姐姐");map.put("妹", "妹妹");String buttonName = button.getText();String returnName = map.get(buttonName);return returnName;}/*** 操作结果:将文本域获得的内容转换成Map的一种映射** @param textArea* @return*/public String convertTextAreaToString(JTextArea textArea) {String[] names = {"的", "爸爸", "妈妈", "老公", "老婆", "儿子", "女儿", "哥哥", "弟弟", "姐姐", "妹妹"};String[] simpleNames = {",", "f", "m", "h", "w", "s", "d", "bb", "sb", "bs", "ss"};String resultContent = textArea.getText();for (int i = 0; i < names.length; i++) {resultContent = resultContent.replace(names[i], simpleNames[i]);}return resultContent;}}

在Frame.java中添加如下方法:

    /*** 将按钮名添加到文本域显示亲戚关系并根据判断其添加“的”前缀** @param nameButton 按钮*/private void setText(JButton nameButton) {String name;// 判断按钮的被点击次数是否为0if (count == 0) {// 如果是0,表示是第一次点击按钮,故不为其添加“的”前缀(即关系之间的分隔标志)name = new NameProperty().getNameByButton(nameButton);} else {// 如果不是0,则表示是第二次或者第N此点击按钮,因此需要为其添加“的”前缀作为亲戚关系之间的分隔name = "的" + new NameProperty().getNameByButton(nameButton);}// 按钮次数统计加一count++;// 将关系字符串显示到文本域中inputRelationTextArea.append(name);}

并在该类下定义变量count

private int count=0;

并为actionPerformed方法添加如下内容:

    @Overridepublic void actionPerformed(ActionEvent e) {// 判断文本域是否为空,如果是则将累计的按钮点击次数清零,重新计数if (inputRelationTextArea.getText().trim().equals(null) || inputRelationTextArea.getText().equals("")) {count = 0;}// 判断事件源是哪一个按钮,并为其设置响应操作if (e.getSource() == fatherButton) {setText(fatherButton);} else if (e.getSource() == motherButton) {setText(motherButton);} else if (e.getSource() == husbandButton) {setText(husbandButton);} else if (e.getSource() == wifeButton) {setText(wifeButton);} else if (e.getSource() == sonButton) {setText(sonButton);} else if (e.getSource() == daughterButton) {setText(daughterButton);} else if (e.getSource() == bigBrotherButton) {setText(bigBrotherButton);} else if (e.getSource() == smallBrotherButton) {setText(smallBrotherButton);} else if (e.getSource() == bigSisterButton) {setText(bigSisterButton);} else if (e.getSource() == smallSisterButton) {setText(smallSisterButton);}}

运行程序,实现点击称谓按钮在上方的文本域显示关系链,效果图如下:

但并没有实现回退和清空的功能

 

回退按钮功能

在Frame.java的Frame构造器中添加如下内容(在类中定义变量undoManager):

        undoManager = new UndoManager();inputRelationTextArea.getDocument().addUndoableEditListener(new UndoableEditListener() {@Overridepublic void undoableEditHappened(UndoableEditEvent e) {undoManager.addEdit(e.getEdit());}});// “回退”按钮事件undoButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {undoManager.undo();}});

现在实现回退功能。

原:

点击:

回退:

 

清空按钮功能

在Frame构造器中为clearButton添加监听器内容如下:

        // ”清空“按钮事件clearButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {inputRelationTextArea.setText("");outputResultTextArea.setText("");}});

运行效果如下:

原:

清空:

 

 

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20191114】可获取本节源码。

更多推荐

Java实战之亲戚关系计算器(swing版)(5)——回退及清空功能

本文发布于:2024-02-06 06:42:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1747187.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算器   清空   实战   功能   亲戚关系

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!