2016-12-17 8 views
0

私は左のすべてのボタンをお互いの上に整列しようとしていますが、私はそれがいつも中心に留まるように思えます。 anchor = GridBagConstraints.EAST; "しかし、それは助けにならなかったし、今私は手伝ってください。あなたは同じ制約を使用するので、あなたが同じセルにすべてのコンポーネントを追加している一つのことについてよく私はこれを私のJpanelの右の部分に合わせることはできません

JButton Button1 = new JButton("<html> Li <center> <small> 7 <br> 3<small/> <center/> <html/> "); 
    JButton Button2 = new JButton("<html> Na <center> <small> 32<br> 11<small/> <center/> <html/> "); 
    JButton Button3 = new JButton("<html>K<center><small> 39 <br> 19<small/> <center/> <html/> "); 



    GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
    int width = gd.getDisplayMode().getWidth(); 
    int height = gd.getDisplayMode().getHeight(); 

    Button1.setPreferredSize(new Dimension(50, 50)); 
    Button2.setPreferredSize(new Dimension(50, 50)); 
    Button3.setPreferredSize(new Dimension(50, 50)); 


    GridBagLayout layout = new GridBagLayout() ; 
    GridBagConstraints c = new GridBagConstraints(); 
    c.gridx = 0; 

    c.anchor = GridBagConstraints.EAST; 
    setLayout(layout); 
    add(Button1, c); 
    add(Button2, c); 
    add(Button3, c); 
    add(exit); 
    setSize(width, height); 
    setExtendedState(JFrame.MAXIMIZED_BOTH); 
    //TODO Align to left 
    setUndecorated(true); 
    setLocationRelativeTo(null); 
+1

左は西、東ではありません。 weightx weighty non-zeroの値を与えることを忘れないでください。 –

+0

1)より良い助けを早く得るために、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 2)ASCIIアート、またはGUIの*意図された*レイアウトの簡単な図を最小サイズで提供し、サイズ変更可能な場合は幅と高さを増やします。 –

答えて

2
c.gridx = 0; 
c.anchor = GridBagConstraints.EAST; 
setLayout(layout); 
add(Button1, c); 
add(Button2, c); 
add(Button3, c); 
add(exit); 

。異なる行に配置したい場合は、各コンポーネントに異なる "gridy"値を指定する必要があります。あなたがweightx/weighty値を指定しない限り

常に中央に滞在するようで、

は、これがデフォルトの動作です。

簡単な方法は、GridLayoutのJPanelを使用することです。すべてのボタンをパネルに追加します。最後に、あなたが使用してフレームにパネルを追加します。

frame.add(buttonPanel, BorderLayout.LINE_START); 

を私はあなたがLayout Managers上のSwingチュートリアルからのセクションを読むことから始め示唆しています。上記のすべてのレイアウトマネージャの実例があります。

その他の問題:

  1. 変数名は大文字で始めるべきではありません。
  2. コンポーネントに対してsetPreferredSize()を使用しないでください。各コンポーネントは、独自の優先サイズを決定する必要があります。レイアウトマネージャは、この情報を使用します。
  3. GUIコードは、Event Dispatch Thread(EDT)で実行する必要があります。

スイングチュートリアルはすべて上記の基準に準拠しているので、デモコードをダウンロードしてダウンロードしてください。

+0

これはありがとうございました。 –

関連する問題