2

ラベルが中央のレイアウトの左側に配置されません。が存在しない場合は、GridLayout正しく動きます。JLabel を左端に移動する方法はありますか?

setHorizo​​ntalAlignment と setAlignmentX を試しましたが、どちらも機能しませんでした

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class asd {
    public static void main(String[] args){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        JLabel lab = new JLabel("LABEL",SwingConstants.LEFT);
        //lab.setHorizontalAlignment(SwingConstants.CENTER);
        GridLayout grid = new GridLayout(3,3,2,1);
        JPanel yourGrid = new JPanel(grid);
        panel.add(lab);
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                JButton but = new JButton();
                yourGrid.add(but);
            }
        }
        panel.add(yourGrid);
        frame.getContentPane().add(BorderLayout.CENTER,panel);
        frame.setVisible(true);
        frame.pack();
    }
}
4

1 に答える 1

7

BoxLayout を使用する場合、内部の要素の配置を設定する必要があります。

この例は次のとおりです: http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html

位置合わせの問題を修正する

ラボとグリッドに合わせて配置を設定する必要があります

lab.setHorizontalAlignment(SwingConstants.LEFT);
yourGrid.setAlignmentX(Component.LEFT_ALIGNMENT);
于 2013-10-23T07:14:35.513 に答える