2014-03-05 54 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