2016-04-16 21 views
0

JButtonのデフォルトサイズは変更できません。私はsetSizeで試していましたが、何もしません。いくつかのJButtonsをクリックすると、画像が設定され、JButtonsが画像のサイズを取得します。私はそれをクリックしたときにJButtonのデフォルトサイズはGridBagLayoutで変更することはできません

btn=new JButton[9]; 
    j=0; 

    for (i = 0; i <btn.length; i++) { 
     btn[i] = new JButton(""); 
     btn[i].addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if(j%2==0){ 
        ((JButton) e.getSource()).setIcon(new ImageIcon("resources/X.png")); 
       }else{ 
        ((JButton) e.getSource()).setIcon(new ImageIcon("resources/O.png")); 
       } 
       ((JButton) e.getSource()).setEnabled(false); 
       j++; 
      } 
     }); 

    } 

GridBagConstraints gbc=new GridBagConstraints(); 

gbc.gridx=0; 
gbc.gridy=0; 
p2.add(btn[0],gbc); 

gbc.gridx=1; 
gbc.gridy=0; 
p2.add(btn[1],gbc); 

gbc.gridx=2; 
gbc.gridy=0; 
p2.add(btn[2],gbc); 

......... 

enter image description here enter image description here

+1

できること:空のイメージを使用します。 'fill'と' weightx/y'制約や 'ipadx/y'制約を使います。 'GridLayout'を使います。 – MadProgrammer

+0

setPreferredSize work! – GlacialMan

+0

@GlacialMan 'setPreferredSize'は悪い考えであり、あなたに問題の終わりをもたらし、それなしで生きることを学ぶ習慣を表します。 [Java Swingのset(Preferred | Maximum | Minimum)Sizeメソッドの使用を避けるべきですか?](http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods -in-java-swi) – MadProgrammer

答えて

3

は、おそらく最も簡単で信頼性の高いソリューションを使用することです(写真付きのJButton)のJButtonの大きさのように同じことをするJButtonのサイズを設定したいですボタンの初期画像と同じサイズの空白の画像

レイアウトマネージャーは、特定のコンポーネントのサイズを直接提案することはできませんが、実際には、レイアウトマネージャーはそれを何とかしてから、レイアウトをもしそれが受け入れられれば、それは分かりません。例えば

...私は自分の白紙画像を作成した。この例では

GridBagLayout

public class TestPane extends JPanel { 

    public TestPane() { 
     setLayout(new GridBagLayout()); 
     BufferedImage img = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = img.createGraphics(); 
     g2d.setBackground(new Color(255, 255, 255, 0)); 
     g2d.clearRect(0, 0, 32, 32); 
     g2d.dispose(); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     for (int row = 0; row < 3; row++) { 
      gbc.gridy = row; 
      for (int col = 0; col < 3; col++) { 
       gbc.gridx = col; 
       add(new JButton(new ImageIcon(img)), gbc); 
      } 
     } 
    } 

    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(200, 200); 
    } 

} 

は、あなたが同じことを行うことができ、それは空白の画像をロードするために同じように簡単です、概念は同じです

+0

ええ、私はそれについて考えましたが、後で私は画像が同じであることを確認しますので、私はいつも画像が同じであることを答えます – GlacialMan

+0

setPreferredSize仕事:) – GlacialMan

+0

@GlacialMan 'setPreferredSize'は彼らがあなたの問題を解決するように見えるが、長期的にはあなたの人生をより困難にし続けるシンプルな機能は、なくても生きることを学ぶ。画像の状態を確認する代わりに、実際のゲームの状態を含むゲームの仮想モデルを用意する必要があります。 – MadProgrammer