Come Sottolineato un JLabel su MouseEnter

Ho provato a cambiare il tipo di carattere, utilizzando:

jLabel.setFont(new Font("Tahoma",1,20));

Ma ci sono solo 4 gli stili qui, Normale, Grassetto, Corsivo, Grassetto+Corsivo.

Voglio farlo funzionare come un link in HTML, la JLabel viene sottolineata quando mi passa il cursore del mouse su di esso.

OriginaleL’autore user1665700 | 2012-09-12

4 Replies
  1. 6

    Per chiarire (o no 🙂 la confusione introdotta nei miei commenti a mKorbel

    Mai creare un tipo di Carattere di blu: sarà molto probabilmente scontro con tutti gli altri font dell’applicazione. Invece, afferrare il default (da l’istanza del componente, come nel frammento di mostrato di seguito o il UIManager, non importa) e derivano.

    Per la derivazione di utilizzo di attributi (rubando spudoratamente da mKorbel risposta), che è qualcosa di simile

    JLabel label = new JLabel("some text - WE ARE UNDERLINED");
    MouseListener l = new MouseAdapter() {
        Font original;
    
        @Override
        public void mouseEntered(MouseEvent e) {
            original = e.getComponent().getFont();
            Map attributes = original.getAttributes();
            attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
            e.getComponent().setFont(original.deriveFont(attributes));
        }
    
        @Override
        public void mouseExited(MouseEvent e) {
            e.getComponent().setFont(original);
        }
    
    
    };
    label.addMouseListener(l);
    JComponent content = new JPanel();
    content.add(label);
    content.add(new JButton("dummy focus"));

    Ma attenzione: che non ti danno alcuna funzionalità di collegamento ipertestuale! Quindi nel caso in cui un collegamento Ipertestuale è quello che si sono davvero dopo, considerare l’utilizzo di un vero e proprio componente di tale funzionalità, come quella di f.io. JXHyperlink in SwingX progetto. Si potrebbe desiderare di eseguire la demo a cui fa riferimento il progetto a casa.

    per la luce al tunel

    OriginaleL’autore kleopatra

  2. 4

    utilizzare per il corretto MouseEvent

    JLabel#setFont(new Font(attributes));

    e indietro

    JLabel#setFont(new Font("Serif", Font.BOLD, 16));

    avvolto in invokeLater, e da definizioni

    final Map attributes = (new Font("Serif", Font.BOLD, 16)).getAttributes();
    attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
    hmm … afaics ti sei dimenticato di impostare la derivata tipo di carattere per l’etichetta 🙂
    grazie mi sono dimenticato di scritto due brevi parole 🙂
    inteso (ovviamente non è abbastanza forte 🙂 enfasi sul derivano – sappiamo tutti che i font non si dovrebbe mai creato, ma che deriva dall’originale
    questo tipo di Carattere non è dichiarato in UIManager, non più dopo il primo tempo viene utilizzato per JComponents, non è, per favore, nessuna idea di cosa stai parlando
    come spesso accade, non ho ben capito cosa vuoi dire 😉 Così evoluta la tua risposta un po’. +1 per rinfrescare la mia memoria su attributi

    OriginaleL’autore mKorbel

  3. 0

    Utilizzare questo con il necessario per il CSS,

    yourLabel.setText(htmlIfy("<p style='color:#1C66AE;'>Your text here</p>"));

    dove il htmlIfy funzione è

    private static final String HTML = "<html>";
        private static final String HTML_END = "</html>";
    
    
    public static String htmlIfy(String s) {
            return HTML.concat(s).concat(HTML_END);
        }

    per aggiungere testo come collegamento utilizzare

    yourLabel.setText(HTMLTagUtil.htmlIfy(HTMLTagUtil
                    .linkIfy("Your Text Here")));//Forgot Password?
    
            yourLabel.setCursor(new java.awt.Cursor(
                    java.awt.Cursor.HAND_CURSOR));

    dove il linkIfy funzione è

    private static final String A_HREF = "<a href=\"";
        private static final String HREF_CLOSED = "\">";
        private static final String HREF_END = "</a>";
    public static String linkIfy(String s) {
            return A_HREF.concat(s).concat(HREF_CLOSED).concat(s).concat(HREF_END);
        }

    OriginaleL’autore NoNaMe

  4. 0
     if (CheckBox.isSelected()) {
            Font font = CheckBox.getFont();
            Map attributes = font.getAttributes();
            attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_LOW_GRAY);
            CheckBox.setFont(font.deriveFont(attributes));
        }
    Benvenuti a Stack overflow, si può aggiungere una spiegazione a questa risposta? Il codice è bene, ma le spiegazioni sono grandi!

    OriginaleL’autore Said Erraoudy

Lascia un commento