【发布时间】:2012-11-13 06:16:20
【问题描述】:
当focusGained 事件发生时,有什么方法可以默认自动选择JTextField 和JTextArea 中的文本?
【问题讨论】:
-
您应该从这里查看@mKorbel 的答案。 stackoverflow.com/questions/10293135/…
标签: java swing focus jtextfield jtextarea
当focusGained 事件发生时,有什么方法可以默认自动选择JTextField 和JTextArea 中的文本?
【问题讨论】:
标签: java swing focus jtextfield jtextarea
你刚刚说了怎么做——一个 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);
【讨论】:
这是你需要的:
jTextField1.selectAll();
更多内容如下:
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");
}
});
【讨论】:
你期待类似的东西
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);
}
});
}
}
【讨论】: