2014-03-05 55 views
1


請幫我解決這個問題。
如何從一個不同的類創建一個JButton,它甚至有可能嗎?
第一個按鈕是這裏的第二個沒有:來自不同類的JButton

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class Source { 

    public static void main(String[] args){ 
     JFrame jf = new JFrame(); 
     jf.setLayout(null); 
     jf.setSize(640, 360); 
     jf.setVisible(true); 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JButton jb = new JButton("first button"); 
     jb.setBounds(50, 50, 110, 20); 

     jf.add(jb); 
     jf.add(new Button()); 
    } 

} 

class Button extends JButton { 
    public Button(){ 
     JButton jb = new JButton("second button"); 
     jb.setBounds(0, 0, 110, 20); 
    } 
} 

預先感謝您。 此致敬禮。

回答

4

在非靜態類方法中執行的代碼使用隱式引用來引用您創建的實例並使用(或者在構造函數的情況下,對您正在創建的內容的引用)調用這些方法,所以您會做如下修正你的代碼,該方法的調用是指這裏的「新按鈕()」你的行創建「jf.add(新按鈕());」:

變化

JButton jb = new JButton("second button"); 
    jb.setBounds(0, 0, 110, 20); 

setText("second button"); 
    setBounds(0, 0, 110, 20); 
+0

親愛的NESPowerGlove,非常感謝你,工作就像一個魅力。儘管如果你不介意,我還有一個後續問題。因此,我們仍然創建一個新的JButton對象,只改變它的文本和邊界,這是正確的?所以一個合適的方法是抽象類而不是不同的類?一般來說,如果我需要不同的按鈕構造函數,如何正確地做到這一點? – Lennotoecom

+0

我不完全理解你的問題,但你的第一個問題,我相信你問我們是否創建了一個我們不能再引用的JButton實例(更具體地說是一個專門的JButton實例),或者再次使用,因爲我們只是簡單地調用新的Button()而不將該引用保存到一個變量中,這是正確的,如果我們只是創建一個而不以某種方式保存它,我們不能再引用它。你的第二個問題,你問如何正確創建更多的JButton?只需用新的JButton(),JButton button2 = new JButton()等等來製作更多的按鈕。 – NESPowerGlove

+0

謝謝你的回覆。我想我明白了。感謝您的解釋。 – Lennotoecom