|
| [Swing] Kan man få vist valgt tekst i Fra : Thorbjørn Ravn Ander~ |
Dato : 31-10-03 12:55 |
|
Jeg sidder med et lille visuelt problem. Jeg har en JComboBox som når
der vælges noget, skal sætte en streng ind i et nærliggende JTextField,
og denne streng skal herefter være valgt (dette er for at håndtere hvad
der sker når man betjener JComboBoksen med tastaturet).
Dette har jeg stort set til at fungere som ønsket, men jeg har opdaget
at den valgte streng i JTextField kun vises som valgt når den har fokus,
hvilket jeg ikke er tilfreds med. Kan den lokkes til at vises - bare
med en anden farve, så brugeren ikke bliver forvirret - imens jeg er i
JComboBoksen?
På forhånd tak,
--
Thorbjørn
| |
Ulrik Magnusson (31-10-2003)
| Kommentar Fra : Ulrik Magnusson |
Dato : 31-10-03 21:33 |
|
Thorbjørn Ravn Andersen wrote:
> Jeg sidder med et lille visuelt problem. Jeg har en JComboBox som når
> der vælges noget, skal sætte en streng ind i et nærliggende JTextField,
> og denne streng skal herefter være valgt (dette er for at håndtere hvad
> der sker når man betjener JComboBoksen med tastaturet).
>
> Dette har jeg stort set til at fungere som ønsket, men jeg har opdaget
> at den valgte streng i JTextField kun vises som valgt når den har fokus,
> hvilket jeg ikke er tilfreds med. Kan den lokkes til at vises - bare
> med en anden farve, så brugeren ikke bliver forvirret - imens jeg er i
> JComboBoksen?
Du kunne måske "highlighte" teksten i din JTextField når JComboBox
komponenten får fokus og fjerne dette igen når den mister focus? At
pille ved selection mekanismen vil nok skade mere end gavne (i forhold
til brugerens normale forståelse). Highlights er tilgængelig på alle
JTextComponent klasser. Du kunne også flytte fokus til JTextField
komponenten ved valg i JComboBox komponenten og flytte det tilbage
igen når man taster "ned" eller "op", eller hvad man nu ellers gør i en
JComboBox..
Ulrik Magnusson
| |
Thorbjørn Ravn Ander~ (04-11-2003)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 04-11-03 10:49 |
|
Ulrik Magnusson wrote:
> Du kunne måske "highlighte" teksten i din JTextField når JComboBox
> komponenten får fokus og fjerne dette igen når den mister focus? At
> pille ved selection mekanismen vil nok skade mere end gavne (i forhold
> til brugerens normale forståelse). Highlights er tilgængelig på alle
Selection mekanismen er meget fin til det her formål, men kan sagtens
erstattes af noget andet.
Jeg prøvede at søge på Highlights men fandt ikke lige noget der var let
at gå til. Har du et link til et eksempel?
--
Thorbjoern Ravn Andersen "...plus...Tubular Bells!"
| |
Ulrik Magnusson (06-11-2003)
| Kommentar Fra : Ulrik Magnusson |
Dato : 06-11-03 13:27 |
|
Thorbjørn Ravn Andersen <nospam0000@c.dk> wrote in message news:<bo7smc$26$1@sunsite.dk>...
> Ulrik Magnusson wrote:
> > Du kunne måske "highlighte" teksten i din JTextField når JComboBox
> > komponenten får fokus og fjerne dette igen når den mister focus? At
> > pille ved selection mekanismen vil nok skade mere end gavne (i forhold
> > til brugerens normale forståelse). Highlights er tilgængelig på alle
>
> Selection mekanismen er meget fin til det her formål, men kan sagtens
> erstattes af noget andet.
>
> Jeg prøvede at søge på Highlights men fandt ikke lige noget der var let
> at gå til. Har du et link til et eksempel?
Her har du et - dit JTextComponent objekts Highlighter
bruger en HighlightPainter til at markere med:
public class HighlightExample
{
public static void main( String[] args )
{
javax.swing.JFrame frame = new javax.swing.JFrame();
frame.getContentPane().setLayout( new java.awt.GridLayout(1,3) );
final javax.swing.JTextField textField =
new javax.swing.JTextField("");
final javax.swing.JButton hButton =
new javax.swing.JButton("Highlight");
final javax.swing.JButton rhButton =
new javax.swing.JButton("Fjern highlight");
frame.getContentPane().add( textField );
frame.getContentPane().add( hButton );
frame.getContentPane().add( rhButton );
final javax.swing.text.DefaultHighlighter.DefaultHighlightPainter
highlightPainter = new
javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(java.awt.Color.red);
java.awt.event.ActionListener actionListener =
new java.awt.event.ActionListener()
{
private int count = 0;
public void actionPerformed( java.awt.event.ActionEvent e )
{
if( e.getSource() == hButton )
{
try
{
count++;
int chars = Math.min(count,textField.getText().length());
textField.getHighlighter().addHighlight(
0,
chars,
highlightPainter );
}
catch( javax.swing.text.BadLocationException ex )
{
System.out.println(ex);
ex.printStackTrace();
}
}
else if( e.getSource() == rhButton )
{
count = 0;
textField.getHighlighter().removeAllHighlights();
}
}
};
hButton.addActionListener( actionListener );
rhButton.addActionListener( actionListener );
frame.pack();
frame.show();
}
}
Ulrik Magnusson
| |
|
|