//请看我的说话程序,一个输入框输入文字,一个输出框输出
import java.awt.*;
import java.awt.event.*;public class Chat extends Frame { // 说话窗口 TextArea ta = new TextArea(); //输出框
TextField tf = new TextField(); //输入框
static String comment = null; //输出框字符串 public void launchFrame() { //窗口初始化
add(ta, "Center");
add(tf, "South");
comment = "";
ta.setEditable(false);
setLocation(400, 300);
setSize(300, 300);
pack();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
tf.addActionListener(new TFListener());
setVisible(true);
}
private class TFListener implements ActionListener { // 输入框监听,每次输入保存在comment内
public void actionPerformed(ActionEvent e) {
TextField txf = (TextField) e.getSource();
comment.concat(txf.getText()+"/n");
ta.setText(comment); //输出框显示所有输入内容
tf.setText("");
}
}
public static void main(String[] args) {
new ChatClient().launchFrame();
}}//问题是:输出框不显示输入的内容
import java.awt.*;
import java.awt.event.*;public class Chat extends Frame { // 说话窗口 TextArea ta = new TextArea(); //输出框
TextField tf = new TextField(); //输入框
static String comment = null; //输出框字符串 public void launchFrame() { //窗口初始化
add(ta, "Center");
add(tf, "South");
comment = "";
ta.setEditable(false);
setLocation(400, 300);
setSize(300, 300);
pack();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
tf.addActionListener(new TFListener());
setVisible(true);
}
private class TFListener implements ActionListener { // 输入框监听,每次输入保存在comment内
public void actionPerformed(ActionEvent e) {
TextField txf = (TextField) e.getSource();
comment.concat(txf.getText()+"/n");
ta.setText(comment); //输出框显示所有输入内容
tf.setText("");
}
}
public static void main(String[] args) {
new ChatClient().launchFrame();
}}//问题是:输出框不显示输入的内容
comment原来是"",执行上面这句后comment不会被改变。
我想,也许依照你的意思,改成“comment = txf.getText().concat("/n");”,就可以了。
"/n"好像也有问题,你想加“/n”?貌似你想加"\n"吧?
不过就算这样,txf最多也只能表示一行。你想不断换行的话,改成下面就可以:
comment = comment + "\n"+ txf.getText();
tf.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
TextField txf = (TextField) e.getSource();
comment = comment.concat(txf.getText() + "\n");
ta.setText(comment); // 输出框显示所有输入内容
tf.setText(""); } });
[/code]
就可以了.
我以前也没有注意到String类的一些方法不会改变String的。谢谢
import java.awt.*;
import java.awt.event.*; public class Chat extends Frame { // 说话窗口 TextArea ta = new TextArea(); //输出框
TextField tf = new TextField(); //输入框
static String comment = null; //输出框字符串 public void launchFrame() { //窗口初始化
add(ta, "Center");
add(tf, "South");
comment = "";
ta.setEditable(false);
setLocation(400, 300);
setSize(300, 300);
pack();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); tf.addActionListener(new TFListener());
setVisible(true);
} private class TFListener implements ActionListener { // 输入框监听,每次输入保存在comment内
public void actionPerformed(ActionEvent e) {
TextField txf = (TextField) e.getSource();
comment.concat(txf.getText()+"/n");
ta.setText(comment); //输出框显示所有输入内容
tf.setText("");
} } public static void main(String[] args) {
new ChatClient().launchFrame();
} } //问题是:输出框不显示输入的内容
然后使用append 方法!