Fehlersuche Adressbuch *Anfänger*

coke189

Mitglied
Moin Leute,

Naja wie man an meinem Code sehn kann bin ich totaler Anfänger, muss das aber irgendwie gebacken bekommen ???:L

Ich würde mich sehr freuen wenn ihr mal eben über den Code von meinem sehr einfachen Adressbuch sehn könntet und mir sagen was da nicht klappt, ich find den Fehler einfach nicht.

Noch ein paar Infos zu dem was ich vor hab:

Ich will ein einfacheres Adressbuch coden, in dem ich JTextfields hab, wo man dann alles an Daten eingibt.
Später kommt dann noch ein Save und ein Delete Button hinzu.
Die Daten sollen aus den JTextFields per Knopfdruck in die JTabel rein, wo sie dann gespeichert werden.
Die Übergabe dieser Daten hab ich noch nicht geschrieben da ich eigentlich keinen Plan hab wie das gehn soll, werd mich aber diesbezüglich noch schlau googlen.

Hoffe dass ich jetzt alles wichtige erwähnt hab, wenn nicht dann hab etwas Nachsicht 🙂


Java:
package Projet;


import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class Adressbuch extends JPanel {
	JTextField num,fiernum,telefon,email,adress,codepostal,duerf,land;
	DefaultTableModel tabModel;
	JTable table;
	
	
	public  Adressbuch() {
		this.setSize(700,400);
		this.setLayout(new GridLayout(4,3));
		
		
	//-----------------------------------
		add(new JLabel("Num"));
		 num = new JTextField("                             ");
		add(num);
		
		add(new JLabel(""));
		
		add(new JLabel("Fiernum"));
		fiernum = new JTextField("                             ");
		add(fiernum);
		
	//------------------------------------
		
		add(new JLabel("Telefon"));
		telefon = new JTextField("                             ");
		add(telefon);
		
		add(new JLabel(""));
		
		add(new JLabel("Email"));
		email = new JTextField("                             ");
		add(email);
	//--------------------------------------
		
		add(new JLabel("Adress"));
		adress = new JTextField("                             ");
		add(adress);
		
		add(new JLabel(""));
		
		add(new JLabel("Code Postal"));
		codepostal = new JTextField("                             ");
		add(codepostal);
	//----------------------------------------
		
		add(new JLabel("Duerf"));
		duerf = new JTextField("                             ");
		add(duerf);
		
		add(new JLabel(""));
		
		add(new JLabel("Land"));
		land = new JTextField("                             ");
		add(land);
		
	}	
}

class AdressSpeicher extends JPanel {
	DefaultTableModel tabModel;
	JTable table;
	
	public static void main(String[]args){
		AdressSpeicher as= new AdressSpeicher();
		
		public AdressSpeicher(){
			String[] columnNames ={"Num","Fiernum","Telefon","Email","Adress","Code Postal","Duerf","Land"};
			Object [][] data = {
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					
								};
			
			tabModel = new DefaultTableModel(data, columnNames);
			 
			table = new JTable(tabModel);
			
			
			JScrollPane scrollPane = new JScrollPane(table);
			 
			JPanel buttonPanel = new JPanel();
			JButton cmdAdd = new JButton("Neue Zeile");
			JButton cmdDelete = new JButton("Markierte Zeile löschen");
	 
			buttonPanel.add(cmdAdd);
			buttonPanel.add(cmdDelete);
	 
			cmdAdd.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Object[] tmp = {"","",""};
					tabModel.addRow(tmp);
				}
			});
	 
			cmdDelete.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (table.getSelectedRow() != -1) {
						tabModel.removeRow(table.getSelectedRow());
					}
				}
			});
	 
			JPanel mainPanel = new JPanel();
			JFrame frame = new JFrame("JTable mit JModel");
			mainPanel.setLayout(new BorderLayout());
			mainPanel.add(scrollPane, "Center");
			mainPanel.add(buttonPanel, "South");
			frame.getContentPane().add(mainPanel);
			frame.pack();
			frame.setVisible(true);
			
			
			
			
			
			
			
			
			
		};
		
	}
	
}


mfg
 
In Swing wird die GUI über ein sog. JContentPane erzeugt. Du hast einfach add benutzt. Das funktioniert so nicht. Guck dir mal das JContentPane an. (Es ist eigentlich ein ganz normales JPane, wird dem JFrame aber als JContentPane über einen setter hinzugefügt.)
 
Hmm versteh ich nicht so ganz :/ Ich poste mal alles was ich hab :

Java:
package Projet;


import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class Adressbuch extends JPanel {
	JTextField num,fiernum,telefon,email,adress,codepostal,duerf,land;
	DefaultTableModel tabModel;
	JTable table;
	
	
	public  Adressbuch() {
		this.setSize(700,400);
		this.setLayout(new GridLayout(4,3));
		
		
	//-----------------------------------
		add(new JLabel("Num"));
		 num = new JTextField("                             ");
		add(num);
		
		add(new JLabel(""));
		
		add(new JLabel("Fiernum"));
		fiernum = new JTextField("                             ");
		add(fiernum);
		
	//------------------------------------
		
		add(new JLabel("Telefon"));
		telefon = new JTextField("                             ");
		add(telefon);
		
		add(new JLabel(""));
		
		add(new JLabel("Email"));
		email = new JTextField("                             ");
		add(email);
	//--------------------------------------
		
		add(new JLabel("Adress"));
		adress = new JTextField("                             ");
		add(adress);
		
		add(new JLabel(""));
		
		add(new JLabel("Code Postal"));
		codepostal = new JTextField("                             ");
		add(codepostal);
	//----------------------------------------
		
		add(new JLabel("Duerf"));
		duerf = new JTextField("                             ");
		add(duerf);
		
		add(new JLabel(""));
		
		add(new JLabel("Land"));
		land = new JTextField("                             ");
		add(land);
		
	}	
}

class AdressSpeicher extends JPanel {
	DefaultTableModel tabModel;
	JTable table;
	
	public static void main(String[]args){
		AdressSpeicher as= new AdressSpeicher();
		
		public AdressSpeicher(){
			String[] columnNames ={"Num","Fiernum","Telefon","Email","Adress","Code Postal","Duerf","Land"};
			Object [][] data = {
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					{"Max","Musterman","123456789","max.musterman@test.com","12, schöne Strasse","123456","Berlin","Deutschland"},
					
								};
			
			tabModel = new DefaultTableModel(data, columnNames);
			 
			table = new JTable(tabModel);
			
			
			JScrollPane scrollPane = new JScrollPane(table);
			 
			JPanel buttonPanel = new JPanel();
			JButton cmdAdd = new JButton("Neue Zeile");
			JButton cmdDelete = new JButton("Markierte Zeile löschen");
	 
			buttonPanel.add(cmdAdd);
			buttonPanel.add(cmdDelete);
	 
			cmdAdd.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Object[] tmp = {"","",""};
					tabModel.addRow(tmp);
				}
			});
	 
			cmdDelete.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (table.getSelectedRow() != -1) {
						tabModel.removeRow(table.getSelectedRow());
					}
				}
			});
	 
			JPanel mainPanel = new JPanel();
			JFrame frame = new JFrame("JTable mit JModel");
			mainPanel.setLayout(new BorderLayout());
			mainPanel.add(scrollPane, "Center");
			mainPanel.add(buttonPanel, "South");
			frame.getContentPane().add(mainPanel);
			frame.pack();
			frame.setVisible(true);
			
			
			
			
			
			
			
			
			
		};
		
	}
	
}

Java:
package Projet;

import javax.swing.JFrame;

public class AdressbuchInFrame {
	public static void main(String[] args) {
		JFrame f = new JFrame();
	}

}

Java:
package Projet;

import java.applet.Applet;

public class AdressbuchInApplet extends Applet {
	public void init() {
		Adressbuch ab = new Adressbuch();
		add(ab);
		this.setSize(ab.getWidth(), ab.getHeight());
		
	}

}

Wo muss ich denn jetzt da mit diesem ContentPane hin ? :/

mfg
 
In die GUI. Die GUI muss in das JContentPane geaddet werden und dann muss das JContentPane (dann noch JPanel) bei dem JFrame als JContentPane gesettet werden. Guck dir mal GUI Swing beispiel bei Google an.
 
Okay also ich hab jetzt viel gelesen und ich hab von Vorne angefangen!

Was ich vorhabe :

Ich hab ein JFrame in dem sich ein JDialog befindet. Auf diesem JDialog hätte ich gerne 2 JPanel übereinander, was ich mit JSplitPane realisieren möchte.
In dem ersten JPanel befinden sich die JTextFields mit denen ich meine Daten abfrage.
In dem zweiten JPanel befindet sich eine JTabel, in der ich gerne meine Daten speichern würde.

Jetzt fehlt mir noch der Teil mit der Übergabe der Daten, weiss aber noch nicht ganz wie ich das machen soll, ich an sowas wie .getText oder so ?
Und es fehlt noch der Teil mit dem JSplitPane.

Irgendwo ist aber noch was falsch, denn ich hab die Größe vom JDialog festgelegt und ich hab die Größe der JPanels festgelegt, aber der zeigt mir da nur quatsch an 😛

Es wäre echt cool wenn ihr mal drüber fliegen könntet 🙂

mfg Coke

Java:
import java.awt.GridLayout;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;

public class Adressbuch extends JFrame {

	public static void main(String[]args){
		
		JDialog haaptfenster = new JDialog();
			haaptfenster.setSize(700,450);
			haaptfenster.setVisible(true);
			
				JPanel eingabe = new JPanel();
				eingabe.setSize(600,200);
				eingabe.setLayout(new GridLayout(4,4));
				
				JTextField num,fiernum,adress,postleitzuel,duerf,land,telefon,email;
				num = new JTextField("                    ");
				fiernum = new JTextField("                    ");
				adress = new JTextField("                    ");
				postleitzuel = new JTextField("                    ");
				duerf = new JTextField("                    ");
				land = new JTextField("                    ");
				telefon = new JTextField("                    ");
				email = new JTextField("                    ");
				
				JLabel Num,Fiernum,Adress,Postleitzuel,Duerf,Land,Telefon,Email;
				Num = new JLabel("Num");
				Fiernum = new JLabel("Fiernum");
				Adress = new JLabel("Adress");
				Postleitzuel = new JLabel("Postleitzuel");
				Duerf = new JLabel("Duerf");
				Land = new JLabel("Land");
				Telefon = new JLabel("Telefon");
				Email = new JLabel("Email");
				
				
				eingabe.add(Num);
				eingabe.add(num);
				eingabe.add(Fiernum);
				eingabe.add(fiernum);
				
				eingabe.add(Adress);
				eingabe.add(adress);
				eingabe.add(Postleitzuel);
				eingabe.add(postleitzuel);
				
				eingabe.add(Duerf);
				eingabe.add(duerf);
				eingabe.add(Land);
				eingabe.add(land);
				
				eingabe.add(Telefon);
				eingabe.add(telefon);
				eingabe.add(Email);
				eingabe.add(email);
				
			
					JPanel speicher = new JPanel();
					//speicher.setSize(600,200);
						JTable tabel = new JTable();
						String[] titel = new String[]{
								"Num","Fiernum","Adress","Postleitzuel","Duerf","Land","Telefon","Email"		
						};
						Object[][] data = new Object[][]{
							//Hier fehlt mir die übergabe	
						};
			
			
			
			
					speicher.add(tabel);
			
		haaptfenster.add(speicher);	
		haaptfenster.add(eingabe);
	}
	
}
 

Zurück
Oben