我有一个JScroll面板和一个JTable。在第一列中,我渲染一个图像,在第二列中,有一个部分列表,这些部分被选择在JScroll面板的图像面板中渲染。现在,我想在列的右侧添加另一列,其中列出了所选的部分列表,这将显示为列表中的每个选定部分计算的一些参数。我在列的标题中添加了一列,但每当我在列中添加一个新的部分列表时,同样的值也出现在最后一列中,而是一些计算的结果与每个部分相关联。定义方法setData的类是TrafficObserveModel,调用该方法的类是btAddObserverActionPerformed。 “类”部分用于在地图上绘制drowing行,并将它们绑定在整行中。
这是我的代码:
首先我声明了这些:
public class TrafficObserveModel extends AbstractTableModel {
private static final long serialVersionUID = 8564695664401462480L;
private Vector<Section> daten = new Vector<Section>(0);
private String[] header = {"Section","calcRGY"};
public void setData(Vector<Section> daten){
//public void setData(Vector<Section> daten, int[] traffic) {
this.daten = daten;
// this.traffic=traffic; //28.01
fireTableDataChanged();
}
,另一个调用方法setData的类是:
private void btAddObserverActionPerformed(ActionEvent evt) {
if(cobSections.getSelectedIndex() != -1) {
Section sectionToAdd = (Section)cobSections.getSelectedItem();
boolean duplicate = false;
for(Section section : observeTraffic) {
if(section.getId().equals(sectionToAdd.getId())) {
duplicate = true;
}
}
if(!duplicate) {
observeTraffic.add(sectionToAdd);
modelObserve.setData(observeTraffic);
imagePanel.repaint();
}
}
}
我在//之后尝试了代码(以//开头的两行) 但结果证明是错误的,事实上没有任何改变,我再次在两列中得到相同的值。
有人可以帮帮我吗?
非常感谢。
我添加了你提到过的一些东西。现在更清楚了吗?实际上,地图和它的屏幕截图显示在地图前面的窗口中。在该窗口上可以绘制线条,而缓冲图像包含在地图上绘制的部分(线条)。在窗口中还有一个位于滚动窗格中的表格,在表格的左栏中有一个图像面板,其中显示缓冲的图像,以及一个包含所有部分的列。在该列中,我想为行中的每个部分添加不同颜色的像素数。
getValueAt方法由:
给出 public Object getValueAt(int row, int col) {
return (Section)daten.elementAt(row);
}