JTable mit ComboBox funktioniert nicht!

Xerxes20

Mitglied
Guten Tag liebe Gemeinde,

zunächst habe ich alles erdengliche probiert, aber es will einfach nicht funktionieren!

Das ganze muss so aussehen:

rqytgrl9.jpg


Aber wenn ich ein Produkt hinzufüge, klappt das nicht, siehe hier:

6lmdjr9q.jpg



Ich möchte natürlich auch, dass so viele Produkte gekauft werden können, wie vorhanden sind, aber erstmal möchte ich, dass die Combobox überhaupt angezeigt wird :D

Hier mein Code:

Code:
package View;


import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Vector;

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import fpt.com.Product;

import Amain.HardwareShop;
import Model.ModelShop;

public class ViewCustomer extends JFrame implements java.util.Observer{
	
	
	public JScrollPane scroll;
	public static JTable table1;
	public JButton bestellen;
	private ModelShop model;
	private DefaultTableModel dm=new DefaultTableModel();;
	



	@Override
	public void update(Observable o, Object arg) {
		// TODO Auto-generated method stub

	}

	public ViewCustomer(ModelShop model) {
		
		this.model=model;
		
		model.addObserver(this);
		
		dm.addColumn("Name");
		dm.addColumn("Quantity");
		dm.addColumn("Price");
		dm.addColumn("Buy");
		

		scroll = new JScrollPane();

		table1 = new JTable(dm);
		bestellen = new JButton();
		
		TableColumn sportColumn = table1.getColumnModel().getColumn(3);

		JComboBox comboBox = new JComboBox();
		
		comboBox.addItem("Snowboarding");
		comboBox.addItem("Rowing");
		comboBox.addItem("Chasing toddlers");
		comboBox.addItem("Speed reading");
		comboBox.addItem("Teaching high school");
		comboBox.addItem("None");
		
		sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
		
				

		//======== viewCustomer ========
		{
			int frameWidth = 645;
			int frameHeight = 380;
			
			setSize(frameWidth, frameHeight);

			Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
			int x = (d.width - getSize().width) / 2;
			int y = (d.height - getSize().height) / 2;


			setLocation(x, y);
			setLayout(null);
			setTitle("View-Costumer");

			//======== Scrollbar ========
			{
				scroll.setViewportView(table1);
				add(scroll);
				scroll.setBounds(0, 15, 645, 270);
			}

			//---- bestellen ----
			bestellen.setText("Bestellen");
			add(bestellen);
			bestellen.setBounds(270, 290, 111, 35);

			setResizable(false);
			setVisible(true);
			
		}
		
	}
	

}

Vielen Dank!
 
Hallo
zuerst mal: die Bilder sind viel zu klein, man kann fast nichts darauf erkennen. Und bitte lade die Bilder hier auf tutorials.de hoch, da die Bilder bei den One-click-Filehostern meist nach einigen Tagen gelöscht werden.
Zu deinem Code: bitte die unnötigen Imports weglassen (Eclipse kann das für dich) und den Code in [code=java] [/code] -Tags, dann liest er sich besser!!

Die Combobox funktioniert bei mir mit folgendem Code (Statt Zeilen 52-55):
Java:
		final Object[][] data = {{"a", "b", "c", "d"}, {"a", "b", "c", "d"}};
		final Object[] columnIdent = {"Name", "Quantity", "Price", "Buy"};
		this.dm.setDataVector(data, columnIdent);
Wenn ich dann in die 4. Spalte klicke, erscheint eine Combobox. Leider ist sie nicht von Anfang an sichtbar.

Hier noch mal der volle Code mit einer main():
Java:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.Observable;

import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class ViewCustomer extends JFrame implements java.util.Observer {

	public JScrollPane scroll;
	public static JTable table1;
	public JButton bestellen;
	// private final ModelShop model;
	private final DefaultTableModel dm = new DefaultTableModel();

	@Override
	public void update(final Observable o, final Object arg) {
		// TODO Auto-generated method stub

	}

	public static void main(final String... args) {
		final JFrame f = new ViewCustomer();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);

	}

	public ViewCustomer(/* final ModelShop model */) {

		// this.model = model;

		// model.addObserver(this);

		this.dm.addColumn("Name");
		this.dm.addColumn("Quantity");
		this.dm.addColumn("Price");
		this.dm.addColumn("Buy");

		final Object[][] data = {{"a", "b", "c", "d"}, {"a", "b", "c", "d"}};
		final Object[] columnIdent = {"Name", "Quantity", "Price", "Buy"};
		this.dm.setDataVector(data, columnIdent);

		this.scroll = new JScrollPane();

		ViewCustomer.table1 = new JTable(this.dm);
		this.bestellen = new JButton();

		final TableColumn sportColumn = ViewCustomer.table1.getColumnModel()
				.getColumn(3);

		final JComboBox comboBox = new JComboBox();

		comboBox.addItem("Snowboarding");
		comboBox.addItem("Rowing");
		comboBox.addItem("Chasing toddlers");
		comboBox.addItem("Speed reading");
		comboBox.addItem("Teaching high school");
		comboBox.addItem("None");

		sportColumn.setCellEditor(new DefaultCellEditor(comboBox));

		// ======== viewCustomer ========
		{
			final int frameWidth = 645;
			final int frameHeight = 380;

			setSize(frameWidth, frameHeight);

			final Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
			final int x = (d.width - getSize().width) / 2;
			final int y = (d.height - getSize().height) / 2;

			setLocation(x, y);
			setLayout(null);
			setTitle("View-Costumer");

			// ======== Scrollbar ========
			{
				this.scroll.setViewportView(ViewCustomer.table1);
				add(this.scroll);
				this.scroll.setBounds(0, 15, 645, 270);
			}

			// ---- bestellen ----
			this.bestellen.setText("Bestellen");
			add(this.bestellen);
			this.bestellen.setBounds(270, 290, 111, 35);

			setResizable(false);
			setVisible(true);
			ViewCustomer.table1.repaint();

		}

	}
}
 
Hallo nochmal,

okay es lag daran, dass keine Daten vorhanden waren, aber genau das ist ja das Problem. Ich füge jetzt in meiner UpdateMethode für die Tabellen noch eine comboBox hinzu, leider wird dann in der Zelle "java.xswing.jcombobx.." angezeigt.

Hier nochmal die Bilder:

http://s1.directupload.net/file/d/2539/rqytgrl9_jpg.htm

http://s1.directupload.net/file/d/2539/6lmdjr9q_jpg.htm

und hier die UpdateMethode:

Java:
public void updateTables(){
		
		DefaultTableModel dm= new DefaultTableModel();

		dm.addColumn("Name");
		dm.addColumn("Quantity");
		dm.addColumn("Price");
		
		for(int i = 0; i < list.size(); i++) {
			Vector<Object> rowData = new Vector<Object>();

			
			rowData.add(list.get(i).getName());
			rowData.add(list.get(i).getQuantity());
			rowData.add(list.get(i).getPrice());
			
			dm.addRow(rowData);
			ViewShop.table1.setModel(dm);
			setChanged();
			notifyObservers();
		}
		

		DefaultTableModel dtm= new DefaultTableModel();
		
		dtm.addColumn("Name");
		dtm.addColumn("Quantity");
		dtm.addColumn("Price");
		dtm.addColumn("Buy");

		for(Product pro: list) {	

			Vector<Object> roData = new Vector<Object>();
			JComboBox combo= new JComboBox();

			roData.add(pro.getName());
			roData.add(pro.getQuantity());
			roData.add(pro.getPrice());
			roData.add(combo);

			dtm.addRow(roData);
			ViewCustomer.table1.setModel(dtm);
			setChanged();
			notifyObservers(pro);

		}
	
	}

Leider weiss ich nicht, wie ich die Bilder hier hochladen soll, irgendwie passiert nichts, wenn ich auf Anhang klicke!
 
Zuletzt bearbeitet:
Zurück