public JoinChatClient(String serverAddress, String chatName)
{
chatWindow.getContentPane().add(sendButton, "South");
chatWindow.getContentPane().add(splitPane, "Center");
chatWindow.setSize(800,500);
sendButton.addActionListener(this);
chatWindow.setTitle("Chat Room");
chatWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
splitPane.setDividerLocation(350);
sendButton.setBackground(Color.gray);
sendButton.setForeground(Color.red);
outChatTextArea.setEditable(false);
inChatTextArea.setFont (new Font("default",Font.ITALIC,20));
outChatTextArea.setFont(new Font("default",Font.BOLD,20));
inChatTextArea.setLineWrap(true);
outChatTextArea.setLineWrap(true);
inChatTextArea.setWrapStyleWord(true);
outChatTextArea.setWrapStyleWord(true);
inChatTextArea.setText("Enter text to be sent here.");
outChatTextArea.setText("You can move the separator bar!");
inChatTextArea.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
if(inChatTextArea.getText().equals("Enter text to be sent here."))
{
inChatTextArea.setText("");
inChatTextArea.setFont(new Font("default",Font.BOLD,20));
}
}
public void focusLost(FocusEvent e) {
if(inChatTextArea.getText().isEmpty())
{
inChatTextArea.setFont (new Font("default",Font.ITALIC,20));
inChatTextArea.setText("Enter text to be sent here.");
}
}
});
chatWindow.getRootPane().setDefaultButton(sendButton);
chatWindow.setVisible(true);
}
我查看了所有关于此问题的线程,我无法弄清楚为什么命中ENTER不会激活附加到sendButton的actionPerformed方法。是因为文本字段有FocusListener吗?
我尝试过的事情:
请记住,我只包含了构建GUI的代码,试图浪费更少的时间。
我想要什么:理想情况下,我想保留我的FocusListener(或类似的东西),以便我可以显示“文本字段提示”。我希望能够在输入inChatTextArea字段时按Enter键发送用户的文本。
答案 0 :(得分:1)
如果JFrame上的某个组件具有焦点,并且可以接受按下输入键,例如其中一个JTextAreas,则输入按下将转到该组件而不是默认按钮。要使默认按钮起作用,那么JFrame或按钮或其他不接受输入键按下的组件需要具有焦点。我猜你的一个JTextAreas已经把焦点搞得一团糟,这让你很烦恼。