在Java中沿着y軸對齊某些字符與BoxLayout的中心似乎存在問題。我不知道是什麼原因造成的,&我已經創建了一個SSCCE來演示效果。在這個例子中,我只使用字符'a',我沿着每個JPanel的直接中間劃一條線來展示每個案例離中心有多遠。粗體文本似乎排列良好,但正常格式的&斜體都嚴重偏離中心,儘管使用了setAlignmentX & setHorizontalAlignment。理解這種效果的任何幫助表示讚賞。Y軸上的Java BoxLayout中的單個字符對齊偏離中心
在某種程度上問題出現在我的特定計算機上的Java問題的情況下,這是當我運行SSCCE時顯示在屏幕上的圖像,它將沿着y軸加載三個不同的JPanel與BoxLayouts放在一起中心的JLabel只有在每個「一」字:
&這裏是爲SSCCE代碼:
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
public class AlignmentTest extends JPanel
{
public AlignmentTest(char label, int style)
{
JLabel l = new JLabel(Character.toString(label));
setBorder(BorderFactory.createLineBorder(Color.BLACK,1));
setBackground(Color.WHITE);
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
setPreferredSize(new Dimension(300,50));
add(Box.createVerticalGlue());
add(l);
l.setFont(l.getFont().deriveFont(style));
l.setAlignmentX(CENTER_ALIGNMENT);
l.setHorizontalAlignment(JLabel.CENTER);
add(Box.createVerticalGlue());
}
public static void main(String[] args)
{
JFrame f = new JFrame("Alignment Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(1,0,5,5));
f.add(new AlignmentTest('a',Font.PLAIN));
f.add(new AlignmentTest('a',Font.BOLD));
f.add(new AlignmentTest('a',Font.ITALIC));
f.pack();
f.setVisible(true);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());
}
}
爲了清楚起見,用'style' [名稱](http://docs.oracle.com/javase/8/docs/api/constant-values.html#java。 awt.Font.BOLD)。 – trashgod
好點,我沒有想到這一點。我已經將代碼更改爲現在使用'style'名稱。謝謝你的反饋。 –