JavaのY軸に沿って特定の文字をBoxLayoutの中心に揃える際に問題があるようです。私はこれを引き起こす原因を知りません。&私はその効果を実証するためにSSCCEを作成しました。この例では、文字「a」のみを使用しています。&各JPanelの真ん中を線で描き、各ケースが中心からどのくらい離れているかを示します。太字の場合は整列しているようですが、通常の書式設定の&は、setAlignmentX & setHorizontalAlignmentの両方を使用していますが、イタリック体はどちらも大きく外れています。この効果を理解する上での助けに感謝します。Javaでの単一文字の配置Y軸上のBoxLayoutが中央にない
特定のコンピュータのJavaで何らかの問題が発生している場合、これは、y軸に沿ってBoxLayoutsを持つ3つの異なるJPanelをロードするSSCCEを実行すると、画面に表示される画像です&文字のみでのJLabelを中心に「」それぞれに:ここ
&はSSCCEのコードです:文字のWindows 7のいずれも中心を整列さにJDK7を使用して
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'の名前を使うようにコードを変更しました。入力いただきありがとうございます。 –