Mam JLabel
, że po kliknięciu na nią zastąpiony przez , potrzebuję, aby JTextField
do automatyczności wybrać cały tekst, gdy się pojawi.Wymuś JTextField, aby wybrać całą zawartość, gdy pojawi się
Dziękuję za pomoc.
Mam JLabel
, że po kliknięciu na nią zastąpiony przez , potrzebuję, aby JTextField
do automatyczności wybrać cały tekst, gdy się pojawi.Wymuś JTextField, aby wybrać całą zawartość, gdy pojawi się
Dziękuję za pomoc.
jedno rozwiązanie: czy to poprzez imprezy ostrości. To nie najlepsze rozwiązanie.
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();
}
}
Dziękuję za odpowiedź, naprawdę mi pomógł –
Jaki jest cel używania Thread.sleep? Zwykle jest to uważane za złą praktykę w aplikacji Swing. – MadProgrammer
To tylko po to, by pole pojawiło się po opóźnieniu, zamiast robić to wszystko - przycisk-ukrywa-element-nowy-pop-sup-getsfocus-all-is-selected o czym mówił w pierwotnym pytaniu. Ale zmienię mój post, aby był jaśniejszy. – JayC667
Klasa JTextField zawiera metody w tym interfejsie API.
To może pomóc:
http://forums.codeguru.com/showthread.php?308517-How-do-you-highlight-the-text-in-a-JTextfield
JTextField.selectAll() jest tym, czego potrzebujesz.
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();
}
});
}
}
Wygląda na to, że musisz użyć selectAll() w połączeniu z [requestFocusInWindow()] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow()), aby uzyskać pożądany efekt. Jak pokazano w mojej edycji. –
Czy tego szukasz? http://stackoverflow.com/questions/1178312/how-to-select-all-text-in-a-jformattedtextfield-when-it-gets-focus/1178596#1178596 – SomeJavaGuy
Próbowałem tego, zanim zadałem to pytanie, Problem z tą odpowiedzią polega na tym, że nie działa. także innym problemem z tą odpowiedzią jest to, że pole tekstowe zaczyna skupiać się tylko po kliknięciu na ten tekst, a nie kiedy pojawia się –
Zobacz http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html o tym, jak skupić się na komponencie Swing –