2016-09-02 6 views
0

私はJava Swingで簡単なペイントプログラムを書いています。色のボタンのグリッドを作成するという問題があります。私はウィンドウの上部にJPanelを作成してそれを行いました。 this is what it looks like right nowボタンを表すアイコンと同じサイズのボタンのグリッドを作成する方法は?

私はこの方法のボタンを追加している:その代わりの

 for (String name : colors.keySet()) { 
     ColorAction action = new ColorAction(name, colors.get(name)); 
     // above is my class that handles action of clicking button 
     BufferedImage image = loadButtonImage(name); 
     JButton button = new JButton (new ImageIcon(image)); 
     button.addActionListener(action); 
     button.setContentAreaFilled(false); 
     add(button); 
    } 

が、私はそれがお互いに近く、各正方形は、カラーボタンになりフィットこれらの正方形の格子状に見てみたいです。今、私が色の四角の近くのどこかをクリックすると、実際にボタンをクリックしているとひどいです。 GridLayoutを使用していますが、デフォルトでパネル全体をカバーするようにすべてのボタンが拡張されていることが分かり、問題が発生します。

はGridBagLayoutのを使用して、複雑なコード以外の私の目標を達成するための簡単な方法はありますでしょうか?

+1

'JLabel'が好きかもしれませんし、画像を使う代わりに' setBackground'で色を設定してください。 – Berger

答えて

0

@BergerはsetBackgroundでのJLabelを使用し、前述のように。 JLabelの電話setPreferredSize(new Dimension(x,x))(x =希望するピクセル単位のピクセル)で四角形をきつく詰め込むには、すべてのラベルを追加した後にコンテナにpack()を呼び出します。

+1

参照は、[|最大|私はsetPreferredの使用を避けるべきでしょうか?Javaのスイング中のminimumSize方法を](http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in -java-swi)(Yes)代わりに 'getPreferredSize()'メソッドをオーバーライドする必要があります – Frakcool

関連する問題