我张贴了这个代码前面打印出来,和我有用的答案很多,大部分是我需要彻底改变我的代码。我明白了,明天我会做!但是现在,这是为了消除我为什么不起作用。无法从另一个类文本到另一个(小白)
我试图从客舱类获得sendText,我的消息窗类和输出在messagePane。而已。这似乎很简单,而且可能是......但我已经连续10个小时在这里。我只是希望它将ChatBox中的内容输出到MessageWindow,而不必完全更改我的代码。请帮助:(
public class ChatBox extends JPanel {
private JScrollPane scrollPane;
private String sendText;
public ChatBox() {
final JTextArea chatPane = new JTextArea();
scrollPane = new JScrollPane(chatPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(scrollPane);
scrollPane.setMinimumSize(new Dimension(550, 50));
scrollPane.setPreferredSize(new Dimension(550, 50));
chatPane.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
sendText = chatPane.getText();
setText(sendText);
chatPane.setText(null);
// System.out.println(sendText); // I can see this in console
}
}
@Override
public void keyTyped(KeyEvent e) {
}
});
}
public String getText() {
return sendText;
}
public void setText(String sendText) {
this.sendText = sendText;
}
}
在我的头上,我设置sendText - >不管我输入然后在消息窗类,我试图用吸气来获取文本和输出。在
public class MessageWindow extends JPanel {
private ChatBox box = new ChatBox();
public MessageWindow() {
JTextArea messagePane = new JTextArea();
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.weightx = 1;
gc.weighty = 1;
gc.fill = GridBagConstraints.BOTH;
gc.insets = new Insets(5, 5, 5, 5);
add(new JScrollPane(messagePane), gc);
System.out.println(box.getText()); // Getting null in the console.
messagePane.append(box.getText()); // Not getting anything on messagePane.
}
}
的messagePane。我知道我需要使用的ActionListeners和一个JTextField,而不是一个JTextArea。我保证我会开始,明天,我将涉农供应链P此整个程序,因为它是,我只需要知道为什么这个基本的东西,失败我:(我知道当我得知getter/setter方法都将成为我完全理解了问题的Java,我想我是对的有关哈哈......
感谢您的帮助!
新规范
public class MessageWindow extends JPanel {
private ChatBox box = new ChatBox(this);
public void OnTextSet(String s) {
System.out.println(s);
}
public MessageWindow() {
JTextArea messagePane = new JTextArea();
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.weightx = 1;
gc.weighty = 1;
gc.fill = GridBagConstraints.BOTH;
gc.insets = new Insets(5, 5, 5, 5);
add(new JScrollPane(messagePane), gc);
System.out.println(box.getText()); // Getting null in the console.
messagePane.append(box.getText()); // Not getting anything on
// messagePane.
}
}
而且
public class ChatBox extends JPanel {
private JScrollPane scrollPane;
private String sendText = "";
private MessageWindow mw;
public ChatBox() {
final JTextArea chatPane = new JTextArea();
scrollPane = new JScrollPane(chatPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(scrollPane);
scrollPane.setMinimumSize(new Dimension(550, 50));
scrollPane.setPreferredSize(new Dimension(550, 50));
chatPane.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendText = chatPane.getText();
setText(sendText);
chatPane.setText(null);
mw.OnTextSet(sendText);
// System.out.println(sendText); // I can see this in
// console
}
}
@Override
public void keyTyped(KeyEvent e) {
}
});
}
public ChatBox(MessageWindow mw) {
this.mw = mw;
}
public String getText() {
return sendText;
}
public void setText(String sendText) {
this.sendText = sendText;
}
}
我这样放弃了,我甚至不知道我会做什么做的: “然后用这个mw来发送你的字符串。” ...把叉子放在我身上! – Bowhuntr11
当你说//其他地方,你在客舱类作为另一个类的意思吗?或者是什么。那是我感到困惑的地方...... – Bowhuntr11
是的,其他地方是ChatBox类。至于发送它,它就像调用一个接受字符串的函数一样简单。 'mw.sendAString(sendText)' –