2017-05-10 28 views
0

我一直在尋找一段時間,但無法找到解決方案,所以我決定在這裏問。JCheckBox centereing

我正在使用Java Swing爲我的gui實現計算器。我有定製的佈局(它可以正常工作100%)。我添加了所有的按鈕,並且所有的按鈕都是正確定位的。我插入的最後一個組件是「Inv」,它是複選框,我無法找到一種方法將它居中放置在其區域內。我曾嘗試將它放在面板中,在borderlayout.center的面板中,設置水平和垂直文本對齊,但沒有任何效果。

invert = new JCheckBox("Inv"); 

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

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

這個RCPosition無非就是說這個組件在哪個行和列中的對象(沒有什麼錯誤)。

My calculator.

+1

您如何使用佈局? –

+0

爲了更快提供更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

回答

1

複選框默認左對齊。嘗試使它中心對齊:

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

如果它沒有幫助,那麼你應該發佈你的佈局管理器。

+0

我不知道發生了什麼事,但昨天沒有工作,但現在確實如此。 Thanx反正。 –

0

您可以嘗試將其放入JPanelBoxLayout,然後在左側和右側添加水平膠水。

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); 
    } 
}); 

這只是一種方法,setHorizontalAlignment也應該工作。