实验目的与要求:
实验目的: 初步掌握图形界面程序设计。
实验要求:
(1).使用JLable、JTextField、JButton等控件实现中英文互译(中译英、英译中),可以使用词典。在报告中附上程序截图、运行结果和详细的文字说明。(50分)
(2).使用JLabel、JButton等控件实现图片浏览器,能够将选中的图片展示出来。在报告中附上程序截图、运行结果和详细的文字说明。(50分)
(1).使用JLable、JTextField、JButton等控件实现中英文互译(中译英、英译中),可以使用词典。在报告中附上程序截图、运行结果和详细的文字说明。(50分)
设计:实现Dictionary类和Translator类,将Translator封装起来并且预留一个点击事件监听的接口方便未来的网络版本
package Hw9;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
public class Translator {
private String content;
private String result;
private Dictionary dictionary;
JButton b1;
JTextField t1, t2;
JLabel l1,l2;
JFrame f;
public void createUI(){
f = new JFrame("Translator");
l1 = new JLabel("请输入翻译内容");
l2 = new JLabel("翻译结果");
t1 = new JTextField("");
t2 = new JTextField("");
b1 = new JButton("点击翻译");
l1.setBounds(50,130,250,20);
l2.setBounds(450,130,250,20);
t1.setBounds(50, 150, 250, 200);
t2.setBounds(450, 150, 250, 200);
b1.setBounds(320, 150, 100, 30);
f.add(b1);
f.add(t1);
f.add(t2);
f.add(l1);
f.add(l2);
f.setSize(800, 500);
f.setLayout(null);
setB1Click();
f.setVisible(true);
}
public void setB1Click(){
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
content = t1.getText();
result = dictionary.findValue(content);
t2.setText(result);
}
});
}
public Translator(){
dictionary = new Dictionary();
content = "";
result = "";
createUI();
}
public static void main(String[] args) {
Translator translator = new Translator();
}
}
class Dictionary{
HashMap<String,String> cToe;
Dictionary(){
cToe = new HashMap<>();
createDictionary();
}
public void createDictionary(){
cToe.put("学习","study");
cToe.put("study","学习");
}
public String findValue(String content){
if(cToe.get(content)!=null){
return cToe.get(content);
}
return "未找到改词语";
}
}
(2).使用JLabel、JButton等控件实现图片浏览器,能够将选中的图片展示出来。在报告中附上程序截图、运行结果和详细的文字说明。(50分)
设计:同样设置JButton的点击监听事件,然后通过点击控制图片的显示,设计Displayer类和ImgList类
package Hw9;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
public class Displayer {
JFrame jFrame;
JLabel jLabel;
JButton[] jButtons;
Displayer() {
jFrame = new JFrame("Displayer");
jLabel = new JLabel("图片展示");
jButtons = new JButton[2];
jFrame.setSize(800, 500);
jFrame.setLayout(null);
jLabel.setBounds(450, 150, 250, 200);
jFrame.add(jLabel);
updateList(new ImgList());
}
public void updateList(ImgList imgList) {
jButtons = new JButton[imgList.getLen()];
for (int i = 0; i < imgList.getLen(); i++) {
jButtons[i] = new JButton("图片" + i);
int finalI = i;
jButtons[i].addActionListener(e -> jLabel.setIcon(new ImageIcon(imgList.src.get(finalI))));
jButtons[i].setBounds(50,130+i*30,250,20);
jFrame.add(jButtons[i]);
}
}
public void showToast(){
jFrame.setVisible(true);
}
public static void main(String[] args) {
Displayer displayer = new Displayer();
displayer.showToast();
}
}
class ImgList {
ArrayList<String> src;
ImgList() {
src = new ArrayList<>();
createList();
}
private void createList() {
src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img1.jpg");
src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img2.png");
src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img3.png");
}
public int getLen() {
return src.size();
}
}