2017-11-25 9 views
1

私は、ラジオ局に関する情報を表示するプログラムを作成しており、好きなチャンネルの画像をクリックしてその情報を取得したいと考えています。JPanel in another JPanel:Swing

チャンネルは、グリッドレイアウトでuppに設定されていますが、各グリッドの内側には、チャンネルの画像と画像のすぐ下のチャンネルの名前の両方が表示されます。だから私はの中のBoxLayoutがトリックをするだろうと思ったが、私が望むようにGUIを見せていない。

jf = new JFrame(); 

     jf.setTitle("tutorial"); 
     jf.setSize(500, 500); 
     jf.setMinimumSize(new Dimension(500, 500)); 
     jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

     JPanel jPanel = new JPanel(); 
     jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS)); 
     JButton jButton1 = new JButton("first"); 
     JButton jButton2 = new JButton("second"); 
     jPanel.add(jButton1); 
     jPanel.add(jButton2); 
     jf.add(jPanel); 

     grid = new JPanel(); 
     grid.setLayout(new GridLayout(3,4,5,10)); 
     grid.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); 


     JPanel jPanel2 = new JPanel(); 
     jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.PAGE_AXIS)); 
     JButton jButton = new JButton("first"); 
     JButton jButton12 = new JButton("second"); 
     jPanel.add(jButton); 
     jPanel.add(jButton12); 
     grid.add(jPanel); 
     grid.add(jPanel2); 

     jf.add(grid); 

グリッドレイアウトに2つのボタンを含むボックスレイアウトを配置しようとしたときのサンプルコードです。

レイアウトを別のレイアウトに配置するにはどうすればよいですか?

+1

1)は、より良いヘルプについては早く、ポスト[MCVE]または[ショート、自炊、正しい例](のhttp:/ /www.sscce.org/)。 2)最小のサイズでGUIの*意図された*レイアウトのアスキーアートまたは簡単な図面を提供し、余分なスペースをどのように使用すべきかを示すために、より幅と高さの変更が可能な場合。 3)*「私が望むようにGUIが表示されていません」*どのように見えますか?スクリーンショットは便利です。十分な担当者がいない場合。スクリーンショットを[編集]として埋め込み、それを画像共有サイトにアップロードしてリンクを提供する。 –

+1

'各グリッドの内側には、チャンネルの画像とチャンネルの名前が画像の下に表示されます。 ' - 画像とテキストを同じボタンに追加できます。 APIを読むと、イメージに関連したテキストの位置を設定できるメソッドがあります。 – camickr

答えて

1

日時:

[...]私は、各グリッドの内側に欲しいのはチャンネルの画像と右画像の下のチャネルの名前でもあります。

How to Use Buttons, Check Boxes, and Radio Buttons次を参照してください。

enter image description here

ImageIcon middleButtonIcon = createImageIcon("images/middle.gif"); 

... 

b2 = new JButton("Middle button", middleButtonIcon); 
b2.setVerticalTextPosition(AbstractButton.BOTTOM); 
b2.setHorizontalTextPosition(AbstractButton.CENTER);