/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
[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

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408188
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste