2017-05-10 3 views
0

Ich habe schon eine Weile gesucht, aber konnte keine Lösung finden, also habe ich beschlossen, hier zu fragen.JCheckBox centreeing

Ich verwende Java Swing für meine GUI-Implementierung des Rechners. Ich habe ein benutzerdefiniertes Layout (das korrekt funktioniert 100%). Ich habe alle Tasten hinzugefügt und alle Tasten sind immer richtig positioniert. Die letzte Komponente, die ich eingefügt habe, ist "Inv" und es ist eine Checkbox, die ich nicht finden kann, um sie in ihrem Bereich zu zentrieren. Ich habe versucht, es in Panel, in Panel mit borderlayout.center, Einstellung der horizontalen und vertikalen Textausrichtung, aber nichts funktioniert.

invert = new JCheckBox("Inv"); 

invert.setBackground(Color.decode("#8DA336")); 
invert.addActionListener(new CommandListener(this,"invert")); 

container.add(invert, new RCPosition(5, 7)); 

Diese RCPosition ist nichts anderes als Objekt, das sagt, in welcher Zeile und Spalte ist diese Komponente (nichts falsch mit dem).

My calculator.

+1

Wie Layout Sie verwenden? –

+0

Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. –

Antwort

1

Ankreuzfeld ist standardmäßig linksbündig ausgerichtet. Versuchen Sie es in der Mitte ausgerichtet:

invert = new JCheckBox("Inv"); 
invert.setHorizontalAlignment(SwingConstants.CENTER); 
// styling and add to container 

Wenn es nicht hilft, sollten Sie Ihren Layout-Manager veröffentlichen.

+0

Ich weiß nicht, was passiert ist, aber das hat gestern nicht funktioniert, aber jetzt tut es. Danke trotzdem. –

0

Sie könnten versuchen, es in eine JPanel mit BoxLayout setzen, dann fügen Sie horizontale Kleber auf der linken und rechten Seite.

final JFrame frame = new JFrame(); 
final JPanel jp = new JPanel(); 
jp.setLayout(new BoxLayout(jp, BoxLayout.X_AXIS)); 
jp.add(Box.createHorizontalGlue()); 
final JCheckBox jcb = new JCheckBox("inv"); 
jp.add(jcb); 
jp.add(Box.createHorizontalGlue()); 

frame.getContentPane().add(jp); 
frame.pack(); 
frame.setLocationRelativeTo(null); 

SwingUtilities.invokeLater(new Runnable() { 

    @Override 
    public void run() { 
     frame.setVisible(true); 
    } 
}); 

Dies ist nur ein Weg ist, es zu tun, setHorizontalAlignment sollte auch funktionieren.

Verwandte Themen