2016-04-19 10 views
2

私はJavaでスイングするのは本当に新しいですが、iveはJLabelが1つのシンプルなプログラムを作成しました。 「はい」と言う人と「いいえ」と言う人。JPanel/JFrameの左上にすべてのスイングコンポーネントを配置するには

私はGridBaGLayoutを使用してJPanel/JFrameを整理しています。私のプログラムはちゃんとコンパイルされて実行されますが、GridBagLayoutはすべてのコンポーネントをJFrameの中央に配置します。私がスイングするのは初めてなので、誰かがJFrameの左上にすべてのコンポーネントを整列させる方法を教えてくれますか?

ありがとうございます! :)

+0

IDEを使用していますか? –

+0

あなたが宿題をしていない限り、JOptionPane、共通のダイアログのコアSwing機能を考えてみましょう。 JOptionPane.showConfirmDialog(null、「続行しますか?」、「続行しますか?」、JOptionPane.YES_NO_OPTION); – Adam

答えて

1

実際の回答ではないかもしれませんが、とにかく:GridBagLayoutの使用をやめてください。それは非常に多くの落とし穴があり、使いにくいので、使用しないでください。

MigLayoutのようなより良い代替品を使用して、それを学んでください。本当に必要な場合を除いて、Javaのデフォルトのレイアウトマネージャを習得しないでください。

MigLayoutを使用した例:

JPanel panel = new JPanel(new MigLayout("","","")); 

panel.add(myJButton1, "wrap"); 
panel.add(myJButton2, "wrap"); 
panel.add(myJButton3, "wrap"); 
panel.add(myJButton4, "wrap"); 
panel.add(myJButton5, "wrap"); 
panel.add(myJButton6, "wrap"); 

enter image description here

+0

ご協力いただきありがとうございます。私はあなたの男の両方を試してみるつもりです。 :) – shrillhook

1

あなたがそれを行うことができますいくつかの方法があります、あなたが最初に別の容器に、すべてのコンポーネントを追加してから容器にそのコンテナをレイアウトでき、しかし、基本的な原理は

Example

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

    public static void main(String[] args) { 
     new Test(); 
    } 

    public Test() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc= new GridBagConstraints(); 
      gbc.weightx = 1; 
      gbc.anchor = GridBagConstraints.WEST; 
      gbc.gridwidth = GridBagConstraints.REMAINDER; 

      for (int index = 0; index < 10; index++) { 
       add(new JButton("Test"), gbc); 
      } 

      gbc.weighty = 1; 
      add(new JLabel(), gbc); 
     } 

    } 

} 
...残ります

基本的に、最後の行にコンテナの残りのスペースを使い、コンテナの左上隅にコンポーネントを強制的に追加する「隠し」コンポーネントを追加します。

関連する問題