Swing Gui zeigt Buttons nicht an

Hayes

Mitglied
Hi

Also ich habe eine Klasse gui in der steht folgender Code
Code:
import java.awt.event.*;

import javax.swing.*;
import java.awt.*;


public class gui extends JFrame implements ActionListener{
	JLabel content = new JLabel();
	
	public gui(){
		//------------------
		//Hauptfenster
		//------------------
		super("Droidwars Farmstatistik");
		Container contentPane = getContentPane();
		contentPane.setLayout(new GridLayout(1, 1));
		contentPane.add(content);
		content.setText("Willkommen im Farmverwaltungstool für Droidwars!\n");
		
		//-------------
		//Menü Bar 
		//-------------
		JMenuBar leiste = new JMenuBar();
		
		//------------
		//Menü Datei
		//------------
		JMenu datei = new JMenu("Datei");
		leiste.add(datei);
		
		//Daten hinzufügen
		JMenuItem mi;
		mi = new JMenuItem("Daten hinzufügen");
		datei.add(mi);
		mi.addActionListener(this);
		//Beenden
		mi = new JMenuItem("Beenden");
		datei.add(mi);
		mi.addActionListener(this);
		
		//---------------
		//Menü Statistik
		//---------------
		JMenu statistik = new JMenu("Statistiken");
		leiste.add(statistik);
		//Tagesbilanz
		mi = new JMenuItem("Tagesbilanz");
		statistik.add(mi);
		mi.addActionListener(this);
		//Wochenbilanz
		mi = new JMenuItem("Wochenbilanz");
		statistik.add(mi);
		mi.addActionListener(this);
		//Jahresbilanz
		mi = new JMenuItem("Jahrebilanz");
		statistik.add(mi);
		mi.addActionListener(this);
		//Grafische Auswertung
		mi = new JMenuItem("Grafische Auswertung");
		statistik.add(mi);
		mi.addActionListener(this);
		
		setJMenuBar(leiste);

	}
	
	public void actionPerformed(ActionEvent event){
		String menuchoice;
		menuchoice = event.getActionCommand();
		if(menuchoice == "Beenden"){
			System.exit(0);
		}
		if(menuchoice == "Daten hinzufügen"){
			addData adD = new addData();
		}
	}

}

Über diese Klasse rufe ich die Klasse addData auf, welche mir eine neues Fenster erzeugen soll. Soweit funktioniert das auch aber er erzeugt mir nur das leere Fenster ohne Buttons :( Was mache ich falsch?

Klasse addData:
Code:
import java.awt.event.*;

import javax.swing.*;
import java.awt.*;

public class addData extends JFrame implements ActionListener{

	public addData(){
		
		//-------------------------
		//Label, Buttons und Panels
		//-------------------------
		JPanel buttonPanel = new JPanel();
		JButton addData = new JButton("Add Data");
		JButton reset = new JButton("Reset");
		buttonPanel.setLayout(new BorderLayout(2,1));
		buttonPanel.add(addData,BorderLayout.WEST);
		buttonPanel.add(reset,BorderLayout.EAST);
		
		//---------------
		//ActionListener
		//---------------
		addData.addActionListener(this);
		reset.addActionListener(this);
		
		//--------
		//Fenster
		//--------
		JFrame frame = new JFrame();
		Container contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout(1,2));
		contentPane.add(buttonPanel,BorderLayout.SOUTH);
		frame.setSize(300,400);
		frame.setVisible(true);
	}
	public void actionPerformed(ActionEvent e){
		
	}
}


MfG
Hayes
 
Zuletzt bearbeitet:
Original geschrieben von Hayes
Code:
	JFrame frame = new JFrame();
	Container contentPane = getContentPane();
	contentPane.setLayout(new BorderLayout(1,2));
	contentPane.add(buttonPanel,BorderLayout.SOUTH);
	frame.setSize(300,400);
	frame.setVisible(true);
Du fügst den buttonPanel zu einem JFrame, zeigst aber den anderen. ;)
 
Re: Re: Swing Gui zeigt Buttons nicht an

Original geschrieben von Vincentius
Du fügst den buttonPanel zu einem JFrame, zeigst aber den anderen. ;)

ja wenn ich den buttonPanel zum JFrame adde kommt immer folgende Fehlermeldung :

java.lang.Error: Do not use javax.swing.JFrame.add() use javax.swing.JFrame.getContentPane().add()

oder habe ich dich falsch verstanden ? :)

MfG
Hayes
 
Deine Klasse addData erbt ja von JFrame. Mit der Methode getContentPane() holst Du also den Container von diesem Frame und fügst dort den buttonPanel ein. Danach kreierst Du einen anderen JFrame und zeigst ihn an.
 
Original geschrieben von Vincentius
Deine Klasse addData erbt ja von JFrame. Mit der Methode getContentPane() holst Du also den Container von diesem Frame und fügst dort den buttonPanel ein. Danach kreierst Du einen anderen JFrame und zeigst ihn an.

Also wenn ich dich jetzt richtig verstanden habe, muss ich nur die Zeile
Code:
JFrame frame = new Jframe();
rausnehmen? Ich probiers mal aus, danke für die hilfe :)
Tut mir leid wenn ich mich so dumm anstelle aber bin noch ein ziemlicher newbie ;)

MfG
Hayes

€: Ok habs rausgefunden :) danke für deine Hilfe.
 
Zuletzt bearbeitet:
Der übliche Hinweis ;)

Gemäß Code Convention beginnen Klassennamen mit einem Großbuchstaben. ;)
Und wenn es sprechender sein soll, dann auch nicht AddData sondern DateFrame nennen oder so...
 
Re: Der übliche Hinweis ;)

Original geschrieben von Snape
Gemäß Code Convention beginnen Klassennamen mit einem Großbuchstaben. ;)
Und wenn es sprechender sein soll, dann auch nicht AddData sondern DateFrame nennen oder so...

Jo ich weiss aber da es ein Projekt nur für mich selber ist, hab ich mal ein Auge zugedrückt ;)
 

Neue Beiträge

Zurück