我创建了一个扩展JTable
类的类。我无法调用public
类中未定义的JTable
方法。我怎样才能做到这一点?
这是我班级的代码:
public class CustomJTable extends JTable
{
private int id_mod = -1;
private ModelloCampiLista mcl = ModelloCampiLista.getInstance();
private TreeMap<Integer, DefaultCellEditor> tm_cbox = new TreeMap<>();
private Map<String,ModelloCampi> tm;
public CustomJTable(MyDefaultTableModel dtm)
{
super();
setCustomModel(dtm);
}
public void setCustomModel(MyDefaultTableModel dtm)
{
super.setModel(dtm);
update(dtm);
}
private void update(MyDefaultTableModel dtm)
{
id_mod = dtm.id_modello;
tm = dtm.tm;
composeTm_cbox();
}
private void composeTm_cbox()
{
TreeMap<Integer, ArrayList<String>> temp = mcl.getCBoxElements(id_mod);
for (Map.Entry<Integer, ArrayList<String>> entry : temp.entrySet())
{
int map_key = entry.getKey();
ArrayList<String> map_value = entry.getValue();
String[] temp_jcb_el = new String[map_value.size()];
for (int i = 0; i < map_value.size(); i++)
temp_jcb_el[i] = map_value.get(i);
JComboBox tmp_cbox = new JComboBox(temp_jcb_el);
DefaultCellEditor temp_dce = new DefaultCellEditor(tmp_cbox);
tm_cbox.put(map_key, temp_dce);
}
}
@Override
public TableCellEditor getCellEditor(int row, int column)
{
if (column == 1)
{
if (tm_cbox.getOrDefault(row, null) == null)
return super.getCellEditor(row, column);
return tm_cbox.get(row);
}
return super.getCellEditor(row, column);
}
}
我想调用名为setCustomModel
的公共方法,但我看不到它。
答案 0 :(得分:1)
您在哪里存储实例?如果您正在做类似
的事情JTable table = new CustomJTable(model);
然后你要删除变量子类型的规范,在运行时将是CustomJTable
但是在编译时变量有JTable
类型,因此你不能调用任何专门的方法。 / p>
但我没有看到整个代码和目的,为什么需要使用自定义setCustomModel
? setModel
已经提供JTable
的原因还不够?
正如您所看到的那样,您的设计是真正的耦合,这在OOP中并不是一件好事。