当我点击“Server”或者“Client”按钮后,无法下方的输入框将无法获取焦点,因此导致无法输入。
另外,我再监听按钮事件时,写了如下代码。请问怎么办 使得按下按钮后,使得重新获取焦点
另外,建立GUI窗口的代码如下:
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ChatPanel extends Frame{
/**
*
*/
private static final long serialVersionUID = 1L;
public Button clientBtn;
public Button serverBtn;
public TextArea textArea;//显示交互内容的窗口
public TextField ipAddrField;//供输入IP地址
public TextField portField;//端口填写
public TextField typeTextField;//文本输入框
public Panel headerPanel;
public Panel textAreaPanel;
public Panel bottomPanel;
private boolean isServer;
//constructor
public ChatPanel(){
clientBtn = new Button("Client");
serverBtn = new Button("Server");
ipAddrField = new TextField("10.92.43.34", 20);
portField = new TextField("5555", 6);
headerPanel = new Panel();
headerPanel.setLayout(new FlowLayout());
headerPanel.add(ipAddrField);
headerPanel.add(portField);
headerPanel.add(clientBtn);
headerPanel.add(serverBtn);
//中部交互窗口显示
textArea = new TextArea("", 10, 50, TextArea.SCROLLBARS_BOTH);
textArea.setEditable(true);
textAreaPanel = new Panel();
textAreaPanel.setLayout(new BorderLayout());
textAreaPanel.add(textArea, "Center");
//后部直接吸纳时输入框即可
typeTextField = new TextField(50);
typeTextField.setEditable(true);
bottomPanel = new Panel();
bottomPanel.add(typeTextField);
add(headerPanel, "North");
add(textAreaPanel, "Center");
add(bottomPanel, "South");
setSize(400,300);
setTitle("ChatPanel");
setVisible(true);
//监听窗口关闭
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
super.windowClosing(e);
System.exit(0);
}
});
}
}
弄了好久,摆脱各位,指点一二,谢谢。
2 个解决方案
#1
不是很清楚你的需求,但是所有swing组件获取焦点的方法都是requestFocus,你试着在某个组件需要获取焦点的时候调用下这个方法
#2
我加上其他一些线程进行测试,结果一点击就使得其他按钮得不到焦点,变成不可编辑。不过误打误撞实现搞定了
仍然谢谢你的回复。
#1
不是很清楚你的需求,但是所有swing组件获取焦点的方法都是requestFocus,你试着在某个组件需要获取焦点的时候调用下这个方法
#2
我加上其他一些线程进行测试,结果一点击就使得其他按钮得不到焦点,变成不可编辑。不过误打误撞实现搞定了
仍然谢谢你的回复。