JButton in andere Klasse auslagern

  • Themenstarter Themenstarter CalibeR.50
  • Beginndatum Beginndatum
C

CalibeR.50

Gast
Tag, bisher haben wir unsere JButtons, Labels usw. immer in den Konstruktor der main Klasse geschrieben. Nun würde ich aber gerne einen button in eine andere Klasse auslagern, in der dann auch der action listener etc. steht.

die main sollte wie folgt aussehen:

Java:
public class main extends JFrame
{
	private Elemente elemente = new Elemente();
	
	public main()
	{
		add(elemente);
	}
	
	
	public static void main(String[] args)
	{
		main hauptfenster = new main();
		
		hauptfenster.setSize(250, 250);
		hauptfenster.setLocation(500, 200);
		hauptfenster.setVisible(true);
	}
}




und die Klasse Elemente dann:


Java:
public class Elemente extends JFrame
{
	private JButton btn1;
	
	public Elemente()
	{
		btn1 = new JButton("test");
		btn1.setBounds(10, 10, 20, 20);
		add(btn1);
	}	
}


wenn ich das un ausführe passiert.... nichts.... falls ich das add(elemente) weglasse kommt immerhin das graue fenster. Kann mir pls jemand anhand eines beispiels zeigen wie ich das lösen kann?

Danke und MFG
CalibeR.50
 
Erster Hinweis: Klassen Namen schreibt man immer groß, also sollte auch deine Klasse main groß geschrieben werden.

Wenn du nun den Button auslagern willst, kannst du das machen (das ist auch ne gute Idee), allerdings hast du dann keine zwei Klassen die jeweils von JFrame erben, du willst ja nachwievor alles in einem Frame (Fenster) angezeigt bekommen.

Wenn du in der einen Klasse nur einen Button haben möchtest, könntest du eine neue Klasse erstellen die von JButton erbt.
Java:
public class MyButton extends JButton{
  public MyButton(String text){
    super(text);
    setBounds(10, 10, 20, 20);
    //Andere Sachen machen
  }
  
  @Override
  public actionPerformed(ActionEvent e){
    //Was soll dein Button machen wenn du ihn anklickst
  }
}

In deiner Main Klasse machst du dann folgendes
Java:
public Main()
	{
		add(new MyButton("test"));
	}

Willst du mehrere Elemente haben (so klingt dein Klassenname ja auch), dann lässt du Elemente von JPanel erben, dann kannst du so vorgehen wie du es probiert hast, im Konstruktor einfach die Komponenten initialisieren und dann mit add(komponente) hinzufügen. Eventuell lohnt sich der Blick auf die LayoutManager: A Visual Guide to Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

edit: Mh wenn ich ehrlich bin, hat eRaaaa die Sache auf den Punkt gebracht :autsch:
 

Zurück
Oben