Button in extra Klasse festlegen und in anderer Klasse einfügen?

Jänö

Mitglied
Ich versuchen ein JFrame zu erstellen, bei dem mehrere Buttons vorkommen.
Da diese Buttons sehr viel gemeinsam habe und sie sich in nur wenigen Sachen (zB Text, Position) unterscheiden, wollte ich eine extra Button Klasse machen, in der die Dinge die gleich sind festgelegt werden, die ich dann in der Hauptklasse einfügen kann und die Werte die sich unterscheiden im Konstruktor festlegen kann. Leider werden die Buttons jetzt nicht im Frame angezeigt :/

Java:
import javax.swing.JButton;

public class Button 
{
   public Button(String text, int x, int y)
   {
       JButton neuerButton = new JButton();
       neuerButton.setText(text);
       neuerButton.setVisible(true);
       neuerButton.setSize(80,50);
       neuerButton.setLocation(x,y);
   }
}

Java:
import javax.swing.JFrame;

public class Test
{
    static JFrame jf = new JFrame(); 
    static Button b1 = new Button("1",0,0);
    public static void main(String[] args)
    {
        jf.setVisible(true);
        jf.setBounds(500, 300, 320, 288);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLayout(null);
        
        jf.add(b1);
    }
}
 
Also, Dein Code ist etwas merkwürdig ;-)

Im Konstruktor erzeugst du einen JButton mit dem aber nichts Sinvolles gemacht wird. Daher macht das Adden in main mit dem erzeugten Button auch keinen Sinn.

Ich habe es mal umgeschrieben und daran kannst Du sehen, was ich meine
Java:
	static JFrame jf = new JFrame();
	static Button b1 = Button.createButton(
			"1",
				0,
				0);

	public static void main(String[] args) {
		jf.setVisible(true);
		jf.setBounds(
				500,
					300,
					320,
					288);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setLayout(null);

		jf.add(b1);
		jf.pack();
	}
}

class Button extends JButton {
	public static Button createButton(String text, int x, int y) {
		Button neuerButton = new Button();
		neuerButton.setText(text);
		neuerButton.setVisible(true);
		neuerButton.setSize(
				80,
					50);
		neuerButton.setLocation(
				x,
					y);
		return neuerButton;
	}
}
 
Besser wäre es auch, wenn du deinen Button nicht Button nennen würdest, sondern ihm lieber einen anderen Namen (wie z.B. MyButton o.ä.) gibst, da es in Java schon eine Klasse mit diesem Namen gibt und es daher zu Verwirrungen kommen könnte.

Und das "Null-Layout" ist eigentlich auch nicht zu empfehlen. Schau dir am besten mal die LayoutManager an.
 

Zurück
Oben