editable JComboBox w JTable

0

Witam *,

Jak w temacie...
JComboBox zachowuje sie w sposób nie przewidywalny, mianowicie:
edytuje jcb i raz zmiany są zachowane a innym razem nie mogę nic zrobić,
po dwukrotnym naciśnięciu entera wprowadzone dane są kasowane a setValueAt(...) jest kompletnie ignorowany...

Proszę o jakąkolwiek wskazówke lub link z opisem podobnego problemu
Z góry thx

0

hej
tu poniżej zamieszczam trochę kodu do obsługo prostej tabelki. W moim projekcie działało to bardzo dobrze, sprawdź, czy o to ci chodziło:

import java.awt.event.;
import javax.swing.
;

public class tabela extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;
private JButton 	okButton=null,
					defaultButton=null;
private JTable macierzTable=null;
private int[]domyslne={0,1,0,0,-1,0,0,0,0};
private JComboBox wyborBox=null;

public static void main(String[] args) {
	new tabela();
}

public tabela(){
	
	super("Test tabeli");
	setLocation(200,200);
	setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	
	macierzTable=new JTable(3,3);
	wyborBox=new JComboBox();
	for(int i=0,nr=-9;i<3;i++)
		for(int j=0;j<3;j++)
			wyborBox.addItem(""+nr++);
	for(int i=0,nr=0;i<3;i++)
		for(int j=0;j<3;j++){
			wyborBox.addItem(""+nr);
			macierzTable.setValueAt(""+domyslne[nr++],i,j);
		}
	macierzTable.setRowHeight(30);
	for(int i=0;i<3;i++)
		macierzTable.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(wyborBox));
	add(macierzTable,"North");
	defaultButton=new JButton("Przywróć domyślne");
	defaultButton.addActionListener(this);
	add(defaultButton,"Center");
	okButton=new JButton("OK");
	okButton.addActionListener(this);
	add(okButton,"South");
	
	pack();
	setVisible(true);
}

public void przywrocDomyslne(){
	for(int i=0,nr=0;i<3;i++)
		for(int j=0;j<3;j++)
			macierzTable.setValueAt(""+domyslne[nr++],i,j);
}
public void actionPerformed(ActionEvent evt) {
	if(evt.getSource()==okButton){
		for(int i=0, k=0;i<3;i++)
			for(int j=0;j<3;j++)
			System.out.println("Element "+k+++" ma wartość: "+macierzTable.getValueAt(i,j));
		}
	else if(evt.getSource()==defaultButton){
		for(int i=0,nr=0;i<3;i++)
			for(int j=0;j<3;j++)
				macierzTable.setValueAt(""+domyslne[nr++],i,j);
	}
}

}

jeśli chcesz dodawać własne wartości po prostu usuń linię:
macierzTable.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(wyborBox));

0

http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

Sa tez tam przyklady do ComboBox'a w tabelce

1 użytkowników online, w tym zalogowanych: 0, gości: 1