2014-02-20 66 views
1

我是GUI中的初學者。GUI中的JButtons

有沒有一種快速的方法來將相同的JButton/Image設置到GUI中的多個位置?爲了更好的說明,如果我想在我的GUI的不同位置使用這個JButton 10次,我是否需要創建一個新的JButton(新的ImageIcon ...)10次?

按鈕不一定要導致任何事情,這只是爲了表演。

JButton jb = new JButton(new ImageIcon("myImage.png")); 
jb.setLocation(10,10); 
jb.setSize(40, 40); 
getContentPane().add(jb); 

回答

4

簡短的回答是,您需要多個JButton的實例。

您可以使用Action,它可以應用於多個按鈕實例(Action的同一實例)。 Action類攜帶將用於配置按鈕的屬性,例如文本和圖標屬性。

組件(如JButton)只能位於一個容器中,因此需要多個實例JButton

看看How to Use ActionsHow to Use Buttons, Check Boxes, and Radio Buttons瞭解更多詳情...

一般來說,你應該避免使用setLocationsetSize和更多地依賴於使用佈局管理器的,但是你沒有提供足夠的上下文說如果這對你有用或沒有。

+0

謝謝,非常感謝老闆 – user3335014

+0

這只是一種方法,它可能是值得嘗試一些其他的建議,以及看他們是如何不同的自己的經驗;) – MadProgrammer

2

是的,你需要爲每個需要的實例創建一個Jbutton對象。

1

既然你有很多JButton都是類似的,我建議你聲明一個數組JButton[] buttons = new JButton[10];並使用for循環來創建每個單獨的按鈕並設置它們的屬性。

1

如果它只是一個節目,我會做以下,顯示在連續的10個按鈕:

int buttonHeight = 10; 
int buttonWidth = 10; 
for (int i = 0; i < 10; i++) { 
    JButton button = new Button("Button " + i); 
    button.setSize(buttonWidth, buttonHeight); 
    button.setLocation(10 + i * buttonWidth, 10); 
    getContentPane().add(button); 
} 
0
import java.util.Scanner; 
import javax.swing.*; 
import java.awt.*; 

class PROB4_CHAL1 extends JFrame 
{ 
    JButton b[]=new JButton[10]; 
     public PROB4_CHAL1() 
     { 
      setLayout(null); 
      setVisible(true); 
      setSize(100,100); 
      for(int i=0;i<10;i++) 
      { 
      b[i]=new JButton(""+i);// or b[i]=new JButton(new ImageIcon("path")); 
      b[i].setBounds(i*10,i*20,50,20); 
      add(b[i]); 
      } 

     } 

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

您可以創建「的JButton [10]」的陣列。 enter image description here