Ich habe ein JScrollPane in zwei Jpanel
s geteilt, wie Sie im Bild sehen kann:Bar Klicken Sie auf und wählen Sie den entsprechenden JTabel Datensatz
Auf der rechten Seite gibt es eine JTable
mit drei Spalten ist. Auf der linken Seite ist das entsprechende Histogramm mit JFreeChart
API erstellt.
Ich muss einen Listener auf dem Histogramm implementieren, um sicherzustellen, dass, wenn man auf einen Balken drückt, der entsprechende Eintrag in der JTable
auf der linken Seite ausgewählt wird.
Um mein Ziel ich Umsetzung dieser Hörer zu erreichen:
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");
}
}
});
Dieser Listener arbeitet korrekt, bis man die JTable indem Sie auf den Header bestellt. Wenn Sie beispielsweise die JTable gemäß Number of occurrences
bestellen, entspricht die ausgewählte Zeile in JTable
nicht der angeklickten Leiste, wenn Sie auf eine Leiste des Histogramms drücken.
--- Bearbeiten
Wenn man eine Bar drückt, ich habe das Ende des entsprechenden Datensatz in der JTable zu ausgewählten. Zum Beispiel drückt man „Bronx“ bar annehmen:
Mein Code funktioniert einwandfrei, bis man die JTable indem Sie auf dem Header-Feld (Gemeinde, Typ, Anzahl der Vorkommen) bestellt.
ich meine Frage bearbeitet. – DistribuzioneGaussiana