JLabel
をクリックしてJTextField
と置き換えたときに、それが表示されたときにすべてのテキストを自動選択する必要があります。JTextFieldが表示されたときにその内容をすべて選択するようにします
ありがとうございました。
JLabel
をクリックしてJTextField
と置き換えたときに、それが表示されたときにすべてのテキストを自動選択する必要があります。JTextFieldが表示されたときにその内容をすべて選択するようにします
ありがとうございました。
ソリューション1を:フォーカスイベントを経由して、それを実行してください。最高の解決策ではありません。
public static void main(final String[] args) {
// simple window preparation
final JFrame f = new JFrame();
f.setBounds(200, 200, 400, 400);
f.setVisible(true);
{ // this sleep part shall simulate a user doing some stuff
try {
Thread.sleep(2345);
} catch (final InterruptedException ignore) {}
}
{ // here's the interesting part for you, this is what you put inside your button listener or whatever
final JTextField t = new JTextField("Hello World!");
t.addFocusListener(new FocusListener() {
@Override public void focusLost(final FocusEvent pE) {}
@Override public void focusGained(final FocusEvent pE) {
t.selectAll();
}
});
f.add(t);
f.validate();
t.requestFocus();
}
}
本当に助けてくれてありがとうございました –
Thread.sleepを使う目的は何ですか?これは、通常、スイングアプリケーション内での悪い練習とみなされます – MadProgrammer
これは、このクリックボタンの非表示要素のすべてを行うのではなく、遅延の後にフィールドをポップアップさせることでした。要素newelement-pop-sup-getsfocus-all-is-selected元の質問で彼が話していたこと。しかし、私は自分の投稿を編集して、それがより明確になるようにします。 – JayC667
JTextFieldクラスには、このAPIのメソッドが含まれています。
これは助けることができる:
http://forums.codeguru.com/showthread.php?308517-How-do-you-highlight-the-text-in-a-JTextfield
JTextField.selectAll()が必要です。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SelectAll
{
private int count = 0;
private void displayGUI()
{
JFrame frame = new JFrame("Select All");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
final JPanel contentPane = new JPanel();
JButton addButton = new JButton("Add");
addButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
JTextField tfield = new JTextField(10);
tfield.setText("" + (++count));
contentPane.add(tfield);
tfield.requestFocusInWindow();
tfield.selectAll();
contentPane.revalidate();
contentPane.repaint();
}
});
contentPane.add(addButton);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args)
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
new SelectAll().displayGUI();
}
});
}
}
[requestFocusInWindow()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow())と組み合わせてselectAll()を使用する必要があるようです。所望の効果を得る。私の編集で示されているように。 –
お探しの商品は見つかりましたか? http://stackoverflow.com/questions/1178312/how-to-select-all-text-in-a-jformattedtextfield-when-it-gets-focus/1178596#1178596 – SomeJavaGuy
私はこの質問をする前にこれを試しましたが、この回答の問題は、それがうまくいかないことです。この回答のもう1つの問題は、テキストフィールドをクリックした後で、表示されていないときにのみ、テキストフィールドがフォーカスを取得することです。 –
http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.htmlを参照してください。どのようにSwingコンポーネントに焦点を当てるかについて –