Hallo zusammen,
mittels der diff-utils-api stelle ich die Unterschiede zweier Textdateien in einem JTree dar.
Abhängig davon, ob es sich um einen Change, Insert, Delete handelt, setze ich jeweils ein Icon vor der Node (blue, green, red).
Dies setze ich mit dem DefaultTreeCellRenderer um.
Das funktioniert auch soweit.
Mein Problem dabei ist und leider kann ich mir das nicht erklären, dass jede Zeile markiert ist?
Wie entferne ich die Markierung? (s. Screenshot).
Als IDE nutze ich Netbeans 7.3.1.
Vielen Dank für eure Hilfe
Nachfolgend der Code:
mittels der diff-utils-api stelle ich die Unterschiede zweier Textdateien in einem JTree dar.
Abhängig davon, ob es sich um einen Change, Insert, Delete handelt, setze ich jeweils ein Icon vor der Node (blue, green, red).
Dies setze ich mit dem DefaultTreeCellRenderer um.
Das funktioniert auch soweit.
Mein Problem dabei ist und leider kann ich mir das nicht erklären, dass jede Zeile markiert ist?
Wie entferne ich die Markierung? (s. Screenshot).
Als IDE nutze ich Netbeans 7.3.1.
Vielen Dank für eure Hilfe
Nachfolgend der Code:
Java:
public final class DiffViewTopComponent extends TopComponent {
public DiffViewTopComponent() {
initComponents();
setName(Bundle.CTL_DiffViewTopComponent());
setToolTipText(Bundle.HINT_DiffViewTopComponent());
}
ImageIcon blueIcon = new ImageIcon("C:/Users/.../Desktop/blue.png");
ImageIcon redIcon = new ImageIcon("C:/Users/.../Desktop/red.png");
ImageIcon greenIcon = new ImageIcon("C:/Users/.../Desktop/green.png");
private static List<String> fileToLines(String filename) {
List<String> lines = new LinkedList<String>();
String line = "";
try {
BufferedReader in = new BufferedReader(new FileReader(filename));
while ((line = in.readLine()) != null) {
lines.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return lines;
}
private void initComponents() {
...
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
List<String> original = fileToLines("C:/Users/.../Desktop/originalFile.txt");
List<String> revised = fileToLines("C:/Users/.../Desktop/revisedFile.txt");
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Data");
DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
difflib.Patch patch = DiffUtils.diff(original, revised);
jTree1.setModel(treeModel);
for (Delta delta : patch.getDeltas()) {
jTree1.setCellRenderer(new MyRenderer());
rootNode.add(new DefaultMutableTreeNode(delta.toString()));
}
}
class MyRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, leaf, expanded, leaf, row, hasFocus);
if (leaf && value.toString().contains("Change")) {
setIcon(greenIcon);
}
if (leaf && value.toString().contains("Delete")) {
setIcon(redIcon);
}
if (leaf && value.toString().contains("Insert")) {
setIcon(blueIcon);
}
return this;
}
}
}
Anhänge
Zuletzt bearbeitet: