2012-04-14 10 views
5

tworzę pewną etykietę:Jak zmienić lukę w etykiecie huśtawka

leftLabel.setAlignmentX(Component.CENTER_ALIGNMENT); 
leftLabel.setFont(new Font(FONT, Font.PLAIN, 280)); 
leftLabel.setBorder(BorderFactory.createTitledBorder("aaa")); 
leftLabel.setText("0"); 

które wyglądać tak: enter image description here

Jak widać istnieje duża luka w górę iw dół. Jak mogę to zmniejszyć?

+0

Co, jeśli nie wybierzesz rozmiaru czcionki, mogę odczytać z mil? – MarioDS

+0

Chcę zmienić rozmiar czcionki – hudi

+0

setAlignmentY()? – Randy

Odpowiedz

10

Trzeba podkręcić wypustki granicznych

import java.awt.Component; 
import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.Insets; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.SwingUtilities; 
import javax.swing.border.TitledBorder; 

public final class TitledBorderDemo { 
    private static void createAndShowGUI(){ 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLayout(new FlowLayout()); 
     frame.add(new TitledLabel(String.valueOf(0))); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private static class TitledLabel extends JLabel{ 
     private static final long serialVersionUID = 1L; 
     private static final String TITLE = "aaa"; 

     TitledLabel(String text){ 
      super(text); 
      setAlignmentX(Component.CENTER_ALIGNMENT); 
      setFont(new Font("Arial", Font.PLAIN, 280)); 
      setBorder(new TitledBorder(TITLE){ 
       private static final long serialVersionUID = 1L; 

       @Override 
       public Insets getBorderInsets(Component c, Insets insets){ 
        // arbitrary insets for top and bottom. 
        return new Insets(insets.top - 45, insets.left, insets.bottom - 55, insets.right); 
      }}); 

     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run() { 
       createAndShowGUI();    
      } 
     }); 
    } 
} 

enter image description here

Mam nadzieję, że zostanie uruchomiony w dobrym kierunku!

+0

wow ładny przykład. Działa to jak urok, teraz muszę utworzyć tylko pustą granicę – hudi

+2

leftLabel.setBorder (nowy EmptyBorder (nowe wstawki (-45, 0, -45, 0))); thx – hudi

+1

+1 dla [sscce] (http://sscce.org/). Zobacz także ten powiązany [przykład] (http://stackoverflow.com/a/4151403/230513). – trashgod

2

Problem tkwi prawdopodobnie w właściwościach nowo utworzonej granicy. Te granice mają wypustki. To jedyna rzecz, o której mogę myśleć, aby wpłynąć na luki. Spróbuj wywołać metodę na granicy, która zmienia te wstawki na [1,1,1,1].

+0

problem nie jest na granicy Dodaję granicę, aby pokazać lukę w JLabel – hudi

+1

@hudi Przyjrzymy się głębiej mojej kryształowej kuli następnym razem. – MarioDS

Powiązane problemy