これらの簡単な方法でこのコードを完成させる必要があります。過度に複雑なことはできません。私は一番上の入力テキストフィールドから翻訳し、一番下のテキストフィールドに出力したいと思います。これまでのところ、正しく見えましたが、翻訳は入力と同じテキストフィールドに出力されます。私はノブであり、メモや教科書をチェックして、ボトムフィールドに出力を変更する方法を理解することはできません。このレベルのコードでは可能ではないようです。翻訳は正しいです。私は、Translateボタンを変更する必要があると思うが、何を指示するか分からない。私が入力ボックスに出力したければうまく動作します。さて、ここに私のコードは、これまでのところです:2つのテキストフィールド、1つの入力、1つの出力
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Translator4 extends JFrame implements ActionListener
{
public static final int WIDTH = 500;
public static final int HEIGHT = 500;
public static final int NUMBER_OF_CHAR = 50;
private JTextField phrase;
private JTextField translatedphrase;
public static void main(String[] args)
{
Translator4 gui = new Translator4();
gui.setVisible(true);
}
public Translator4()
{
//title bar and overall size
super("Pig Latin Translator v.4.0");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(3,1));
//create input text filed
JPanel namePanel = new JPanel();
namePanel.setLayout(new BorderLayout());
namePanel.setBackground(Color.WHITE);
phrase = new JTextField(NUMBER_OF_CHAR);
namePanel.add(phrase, BorderLayout.CENTER);
JLabel nameLabel = new JLabel("Enter the phrase in English to be translated:");
namePanel.add(nameLabel, BorderLayout.NORTH);
add(namePanel);
//create the buttons
JPanel buttonPanel= new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.setBackground(Color.GREEN);
JButton actionButton = new JButton("Translate");
actionButton.addActionListener(this);
buttonPanel.add(actionButton);
JButton clearButton = new JButton("Clear");
clearButton.addActionListener(this);
buttonPanel.add(clearButton);
add(buttonPanel);
//create the output text field
JPanel namePanel2 = new JPanel();
namePanel2.setLayout(new BorderLayout());
namePanel2.setBackground(Color.WHITE);
translatedphrase = new JTextField(NUMBER_OF_CHAR*2); //output will be larger so I multiplied it by 2
namePanel.add(phrase, BorderLayout.CENTER);
JLabel nameLabel2 = new JLabel("Translation:");
namePanel2.add(nameLabel2, BorderLayout.NORTH);
add(namePanel2);
}
public void actionPerformed(ActionEvent e)
{
String actionCommand = e.getActionCommand();
if (actionCommand.equals("Translate")) //when the user wants a translation, this block executes
{
String[] words=new String[100]; //takes up to 100 words
String sentence = phrase.getText(); //the user input made into a string
String newSentence=""; //the output string generated
words = sentence.split(" "); //splits based on spaces, no other punctuation allowed
for (int index=0; index< words.length; index++) //steps thru the array of words
{
char firstChar = words[index].charAt(0); //rules for vowels, 'one' becomes 'oneway'
if (firstChar=='a'||firstChar=='e'||firstChar=='i'||firstChar=='o'||firstChar=='u')
{
words[index] = words [index] + "way";
newSentence=newSentence + " " + words[index]; //adds the word just now modified to new sentence
}
else //rules for words that don't start with vowels, 'blank' becomes 'lankbay'
{
firstChar = ' ';
words[index] = (words[index]).substring(1,(words[index].length()))
+ (words[index]).charAt(0) + "ay";
newSentence=newSentence + " " + words[index]; //adds the word just now modified to new sentence
}
phrase.setText(newSentence); //sends the new sentence back for output... problem here
}
}
else if (actionCommand.equals("Clear"))
phrase.setText("");
else
phrase.setText("Unexpected error.");
}
}
べきであると仮定します。これは、入力と同じボックスに置き、上書きします。 – GDearth
トップテキストフィールドに戻すのではなく、出力を翻訳されたテキストフィールドの下につなぐにはどうすればいいですか? – GDearth
固定。私はその行を次の行に変更するだけでなく、\ n を翻訳しました.phrase.setText(newSentence); しかし、私の2番目のフィールドは間違っていました。私はそれを次のように変更しました: translatedphrase = new JTextField(NUMBER_OF_CHAR * 2); namePanel2.add(translatedphrase、BorderLayout.CENTER); JLabel nameLabel2 = new JLabel( "翻訳:"); namePanel2.add(nameLabel2、BorderLayout.NORTH); \t ありがとうございました。それは私が正しい場所を探していた。 – GDearth