rig*_*gon 1 java swing focus jtextfield jtextarea
有什么办法可以自动默认选择的文本JTextField,并JTextArea在focusGained事件发生?
你刚刚说了怎么做 - FocusListener的focusGained事件.
然后,您可以通过FocusEvent的getSource()方法获取其焦点已获得的JComponent,然后在其上调用该selectAll()方法.
就像是:
FocusAdapter selectAllFocusAdapter = new FocusAdapter() {
public void focusGained(FocusEvent e) {
final JTextComponent tComponent = (JTextComponent) e.getSource();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
tComponent.selectAll();
}
});
tComponent.selectAll();
}
};
myJTextField.addFocusListener(selectAllFocusAdapter);
otherJTextField.addFocusListener(selectAllFocusAdapter);
myTextArea.addFocusListener(selectAllFocusAdapter);
Run Code Online (Sandbox Code Playgroud)
这就是你需要的:
jTextField1.selectAll();
Run Code Online (Sandbox Code Playgroud)
更多信息:
jTextField1.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if(jTextField1.getText().equals(initialText))
//jTextField1.setText("");
jTextField1.selectAll();
}
@Override
public void focusLost(FocusEvent e) {
if(jTextField1.getText().equals(""))
jTextField1.setText("whatever");
}
});
Run Code Online (Sandbox Code Playgroud)
你期待类似的东西吗?
class MyFocusTextField extends JTextField {
{
addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
FocusTextField.this.select(0, getText().length());
}
@Override
public void focusLost(FocusEvent e) {
FocusTextField.this.select(0, 0);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)