W sumie jak w temacie
Potrzebuję taki komponent żeby móc myszką zaznaczyć z niego treść do skopiowania, ale jednocześnie żeby skakanie tabem po panelu omijało ten komponent.
0
0
Nie napisałeś czy to pole tekstowe ma być edytowalne. Jeśli tak, to wystarczy:
tf.seFocusable(false);
Jeśli nie, to musisz stworzyć własną FocusTraversalPolicy.
0
Zrobiłem, ale jakoś tak trochę naokoło chyba, póki co działa :)
Może ktoś ma jakiś lepszy pomysł ?
ps. nie wspomniałem na początku że to ma być jeszcze z maską ale to chyba bez znaczenia czy JTextField czy JFormattedTextField
textField = new JFormattedTextField(new MaskFormatter("###-###-###"));
textField.setText("111222333");
textField.setEditable(false);
textField.setFocusable(false);
textField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
textField.setFocusable(false);
super.focusLost(e);
}
});
textField.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
textField.setFocusable(true);
textField.requestFocus();
}
});
0
bogdans napisał(a):
Nie napisałeś czy to pole tekstowe ma być edytowalne. Jeśli tak, to wystarczy:
tf.seFocusable(false);
Jeśli nie, to musisz stworzyć własną FocusTraversalPolicy.
Sorki, może nie sprecyzowałem na początku wszystkich wymagań
Pole ma być nie edytowalne, ale możliwe do zaznaczenie i skopiowania sobie przez CTRL+C
Chciałem wykorzystać FocusTraversalPolicy ale jakoś pobłądziłem :(
1
Jakoś tak:
//w konstruktorze okna:
Vector<Component> acceptable = new Vector<Component>();
acceptable.add(...);
acceptable.add(...);
...
FocusTraversalPolicy myPolicy = new AnotherFocusTraversalPolicy(acceptable);
setFocusTraversalPolicy(myPolicy);
//oraz
class AnotherFocusTraversalPolicy extends DefaultFocusTraversalPolicy
{
Vector<Component> acceptable;
public AnotherFocusTraversalPolicy(Vector<Component> acceptable)
{
this.acceptable = acceptable;
}
protected boolean accept(Component component)
{
return acceptable.contains(component);
}
}