设计Java实验1.创建 Java项目,写 UbbiDubbiGenerator 类中所有方法,包括 createWindow() 和 buttonPressed()。 2. 完成 createWindow() 方法,设置所有图形控件,必须要有标题栏和浅灰色背景。顶部的 Textfield 控件(Input:)将允许用户输入文本,其下方的 Label 控件(Output:输出)最终将显示用户键入内容的 Ubbi Dubbi 版本。 底部有一个“Translate”按钮,居中。还有一些提示的 Labels,请放在窗体中合适的位置。创建窗口使用 Java JFrame 类 3.将代码添加到 buttonPressed() 方法中,当按下 Button 控件,它会从输入 TextField 控件中读取输入,并将其分解为多个字段,分解是否成功,用下面的方法测试一下:使用循环语句调用System.out.println() 分别显示每个分词,测试代码在没有输入任何文本的情况下按下按钮,程序不会抛出异常中断。 4. 当上一步正常工作时,删除 println() 语句,并将其替换为以下代码:将每个单词转换为小写,生成键入的单词的 Ubbi Dubbi 版本,要完成此步骤将用到条件、循环和基本的字符串方法。上述过程完成后,应设置输出 Label 以将结果显示为一系列 Ubbi Dubbi 单词,每个单词由单个空格分隔。 5. 实验效果是让翻译器处理正确的输入,实现以上功能。若用户点击按钮,但没有输入 TextField 中没有任何文本则不报错,也不发生翻译。输出Label 应保持空白,或其中已经包含有上一次的文本,则应变空白。
时间: 2023-06-27 08:04:53 浏览: 341
以下是Java实验1的代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class UbbiDubbiGenerator {
private JFrame frame;
private JTextField inputField;
private JLabel outputLabel;
public UbbiDubbiGenerator() {
frame = new JFrame("Ubbi Dubbi Generator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
frame.getContentPane().setBackground(Color.LIGHT_GRAY);
frame.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_END;
JLabel inputLabel = new JLabel("Input:");
frame.add(inputLabel, c);
c.gridx = 1;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_START;
inputField = new JTextField(20);
frame.add(inputField, c);
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.LINE_END;
JLabel outputTextLabel = new JLabel("Output:");
frame.add(outputTextLabel, c);
c.gridx = 1;
c.gridy = 1;
c.anchor = GridBagConstraints.LINE_START;
outputLabel = new JLabel("");
frame.add(outputLabel, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 2;
c.anchor = GridBagConstraints.CENTER;
JButton translateButton = new JButton("Translate");
translateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
buttonPressed();
}
});
frame.add(translateButton, c);
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 2;
c.anchor = GridBagConstraints.CENTER;
JLabel tipLabel = new JLabel("Enter some text and click the Translate button to see Ubbi Dubbi.");
frame.add(tipLabel, c);
frame.setVisible(true);
}
private void buttonPressed() {
String inputText = inputField.getText();
if (inputText.isEmpty()) {
outputLabel.setText("");
return;
}
String[] words = inputText.split("\\s+");
StringBuilder sb = new StringBuilder();
for (String word : words) {
String ubbiDubbiWord = convertToUbbiDubbi(word);
sb.append(ubbiDubbiWord).append(" ");
}
outputLabel.setText(sb.toString().trim());
}
private String convertToUbbiDubbi(String word) {
String vowels = "aeiouAEIOU";
StringBuilder sb = new StringBuilder();
boolean isVowelFound = false;
for (char c : word.toCharArray()) {
if (vowels.indexOf(c) != -1) {
sb.append("ub").append(c);
isVowelFound = true;
} else {
sb.append(c);
}
}
if (!isVowelFound) {
sb.insert(0, "ub");
}
return sb.toString().toLowerCase();
}
public static void main(String[] args) {
new UbbiDubbiGenerator();
}
}
```
此代码实现了一个简单的Ubbi Dubbi生成器,具有以下功能:
1. 在窗口中设置了标题栏和浅灰色背景。
2. 提供了一个TextField控件用于输入文本,一个Label控件用于显示Ubbi Dubbi版本的输出。
3. 提供了一个“Translate”按钮,点击此按钮将执行翻译功能。
4. 当用户点击按钮但没有输入任何文本时,程序不会抛出异常中断,并且输出Label将保持空白。
5. 翻译器将每个单词转换为小写,生成键入的单词的 Ubbi Dubbi 版本,并将结果显示为一系列 Ubbi Dubbi 单词,每个单词由单个空格分隔。
注意,在将每个单词转换为Ubbi Dubbi版本时,该代码使用了条件、循环和基本的字符串方法。
阅读全文