2017-01-14 1 views
-1

私は、アプリケーションがボタン上のいくつかの画像を含むことができる必要があるプロジェクトに取り組んでいます。各ボタンの長さと幅は同じでなければなりません。アプリケーションには約10〜20個のボタンが必要です。そこで、JScrollPaneを使ってすべてのJButtonを水平に整理することにしました。最初に、JPanelにこれらのJButtonをすべて追加しました。このJPanelは、LayoutとGridLayoutを1列と10行に設定しました。その後、JPanelをJScrollPaneに追加します。 その結果、すべてのボタンのサイズが同じになります。しかし問題は、JScrollPaneのJScrollBarが移動できなかったことです(JScrollPaneまたはGridLayoutの長さを超えるボタンが不十分で、各ボタンのサイズが常に変更されている可能性があります)。それで、JButtonを最大20個追加しようとしました(写真2)。したがって、JScrollPaneのJScrollBarが有効になり、移動できました。しかし残念なことに、JScrollPaneのすべてのJButtonは、ボタンが追加されるたびに短く短くなりました。JButtonのサイズを維持する方法は、JButtonをJScrollPaneにますます追加すると同じままですか?

これは、GridLayoutのために、私は各コ​​ンポーネントのサイズを自動的に変更するJPanelに設定しているためだと思います。そこで、私はFlowLayoutを使用しようとしましたが、JButtonが小さすぎてサイズを変更できないため、期待通りには満足できませんでした(pic3)。もっと多くのボタンが追加されるたびに、またはサイズを設定できるたびに、各ボタンのサイズを変更せずにそのまま保持したかっただけです。

これまでに誰も経験したことがありませんでした。

public class Testing 
    { 

     public Testing() 
     { 
      JFrame frm = new JFrame(); 
      JPanel panel = new JPanel(); 
      JScrollPane sc = new JScrollPane(); 

      // init frame 
      frm.setSize(1366, 768); 
      frm.setLayout(new GridLayout(5, 1, 10, 10)); 

      // init panel 
      panel = new JPanel(); 
      panel.setLayout(new FlowLayout(FlowLayout.LEFT)); 

      // set some JScrollpane properties 
      sc.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
      sc.setViewportView(panel); 

      // add few button into panel 
      for (int i = 0; i < 20; i++) 
      { 
       panel.add(new JButton("Button " + i)); 
      } 

      frm.add(sc); 
      frm.setVisible(true); 
      frm.setLocationRelativeTo(null); 
     } 

     public static void main(String[] ar) 
     { 

      new Testing(); 
     } 
    } 

enter image description here

enter image description here enter image description here

答えて

0

[OK]を...今、幸いにも私は誤って答えを見つけることができます。 JScrollPaneですべてのコンポーネントを同じサイズに設定するには、JPanelのレイアウトをFlowLayoutに設定し、setSize()の代わりにsetPreferredSize()を使用してJPanelに追加するコントロールのサイズを変更するだけです。それは魅力のように働くでしょう。 :)

リンク:Giulio Biagini

関連する問題