Hej. Mam problem z wywołaniem metody z innej klasy w JComboBox, które jest umieszczone w JTable. Wywoływana metoda nie odświeża tabeli po kliknięciu na pole z comboboxa (metoda ta, w klasie, w której jest umieszczona działa bez zarzutu), ale dopiero po kliknięciu na to pole, a następnie kliknięciu ponownie w to pole lub inne.
Klasa z ComboBoxem:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
public class RybyComboBox extends DefaultCellEditor implements ItemListener{
public JComboBox comboBox;
Ryba ryba;
public RybyComboBox(Ryba ryba) {
super(new JComboBox());
comboBox = (JComboBox)getComponent();
comboBox.addItem("Ryba");
comboBox.addItem("Szczupak");
comboBox.addItem("Sandacz");
comboBox.addItem("Okon");
comboBox.addItem("Bolen");
comboBox.addItem("Sum");
comboBox.addItem("Klen");
comboBox.addItemListener(this);
this.ryba = ryba;
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if (row == 0) {
comboBox.setSelectedItem(value);
comboBox.setVisible(true);
return comboBox;
}
return null;
}
public Object nasluchCombboBoxa(Object object){
return object;
}
public void itemStateChanged(ItemEvent arg0) {
if (arg0.getStateChange() == ItemEvent.SELECTED) {
if(nasluchCombboBoxa(arg0.getItem())=="Bolen"){
ryba.refreshAfterSelecting(nasluchCombboBoxa(arg0.getItem()));
//System.out.print("Bolen: "+nasluchCombboBoxa(arg0.getItem())+"\n");
}else if(nasluchCombboBoxa(arg0.getItem())=="Szczupak"){
System.out.print("Szczupak: "+nasluchCombboBoxa(arg0.getItem())+"\n");
ryba.refreshAfterSelecting(nasluchCombboBoxa(arg0.getItem()));
}
}
oraz ta metoda z klasy Ryba:
public void refreshAfterSelecting(Object obj){
remove(scrollPane);
RybyModel modello = new RybyModel();
tableNew = new JTable(modello);
((RybyModel) tableNew.getModel()).setDane(SelectData(obj));
tableNew.setAutoCreateRowSorter(true);
scrollPane2 = new JScrollPane(tableNew);
scrollPane2.setBounds(0,0,1275,400);
getContentPane().add(scrollPane2);
validate();
}
w tej metodzie, metoda SelectData(obj) również działa poprawnie, więc może mam źle zrobiony nasłuch ComboBoxa, ale nie wiem, jak powinno być? Sad. Pozdrawiam