单击一个栏和 select 相应的 JTabel 记录
Click a bar and select the corresponding JTabel record
我有一个 JScrollPane 分为两个 Jpanel
s,如图所示:
右边有一个 JTable
三列。左边是用 JFreeChart
API 创建的相应直方图。
我必须在直方图上实现一个侦听器,以确保当按下一个条时,左侧 JTable
中的相应记录被选中。
为了达到我的目标,我实现了这个监听器:
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseMoved(ChartMouseEvent arg0) {
}
@Override
public void chartMouseClicked(ChartMouseEvent arg0) {
try{
TableModel model = table.getModel();
CategoryItemEntity entity = (CategoryItemEntity) arg0.getEntity();
Comparable row = entity.getRowKey();
Comparable col = entity.getColumnKey();
System.out.println(String.valueOf(row));
String field = String.valueOf(col);
for(int i = 0; i<model.getRowCount(); i++) {
if(model.getValueAt(i, 0).equals(field)) {
table.changeSelection(i, 0, false, false);
}
}
}
catch (Exception e) {
System.out.println("No bars selected");
}
}
});
在通过单击 header 来订购 JTable 之前,此侦听器可以正常工作。例如,如果根据 Number of occurrences
对 JTable 进行排序,当按下直方图的某一条时,JTable
中的选定行与单击的条不对应。
---编辑
当按下一个栏时,我必须在 JTable 中选择对应的记录。例如,假设按下 "Bronx" bar:
我的代码可以正常工作,直到通过单击 header 字段(行政区、类型、出现次数)来订购 JTable。
您必须将视图行号转换为准确的行号。
您可以通过以下方式完成此操作:
int realRowNumber = table.convertRowIndexToModel(viewRowIndex);
我有一个 JScrollPane 分为两个 Jpanel
s,如图所示:
右边有一个 JTable
三列。左边是用 JFreeChart
API 创建的相应直方图。
我必须在直方图上实现一个侦听器,以确保当按下一个条时,左侧 JTable
中的相应记录被选中。
为了达到我的目标,我实现了这个监听器:
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseMoved(ChartMouseEvent arg0) {
}
@Override
public void chartMouseClicked(ChartMouseEvent arg0) {
try{
TableModel model = table.getModel();
CategoryItemEntity entity = (CategoryItemEntity) arg0.getEntity();
Comparable row = entity.getRowKey();
Comparable col = entity.getColumnKey();
System.out.println(String.valueOf(row));
String field = String.valueOf(col);
for(int i = 0; i<model.getRowCount(); i++) {
if(model.getValueAt(i, 0).equals(field)) {
table.changeSelection(i, 0, false, false);
}
}
}
catch (Exception e) {
System.out.println("No bars selected");
}
}
});
在通过单击 header 来订购 JTable 之前,此侦听器可以正常工作。例如,如果根据 Number of occurrences
对 JTable 进行排序,当按下直方图的某一条时,JTable
中的选定行与单击的条不对应。
---编辑
当按下一个栏时,我必须在 JTable 中选择对应的记录。例如,假设按下 "Bronx" bar:
我的代码可以正常工作,直到通过单击 header 字段(行政区、类型、出现次数)来订购 JTable。
您必须将视图行号转换为准确的行号。
您可以通过以下方式完成此操作:
int realRowNumber = table.convertRowIndexToModel(viewRowIndex);