Guten Abend,
ich habe ein JUNG Projekt welches aus mehereren Klassen besteht.
Die Klasse DBPlot wie folgt zusehen hat ein ein paar Listener implementiert, diese schauen ob in der Klasse GUIInterface sich etwas geändert hat.
Mit drücken des Buttons "clearButton" würde ich gerne den Graphen der VisualisionViewer löschen und einen neuen zeichnen.
Der Clearbutton Listener wird gerufen aber leider nicht repaint funktion. Ich habe dem "graph" createForestTestempty forest übergegeben, dadurch ist der Graph wie eine leere Liste. Danach habe ich versucht das ganze zu repainten in der Klasse GuiInterface. Leider ohne Erfolg.
Ein weiterer Versuch war eine methode "redrawing" in der Klasse GuiInterface zu implementieren und zu rufen leider auch ohne erfolg. Ich hoffe Ihr könnt mir weiterhelfen.
ich habe ein JUNG Projekt welches aus mehereren Klassen besteht.
Die Klasse DBPlot wie folgt zusehen hat ein ein paar Listener implementiert, diese schauen ob in der Klasse GUIInterface sich etwas geändert hat.
Mit drücken des Buttons "clearButton" würde ich gerne den Graphen der VisualisionViewer löschen und einen neuen zeichnen.
Der Clearbutton Listener wird gerufen aber leider nicht repaint funktion. Ich habe dem "graph" createForestTestempty forest übergegeben, dadurch ist der Graph wie eine leere Liste. Danach habe ich versucht das ganze zu repainten in der Klasse GuiInterface. Leider ohne Erfolg.
Ein weiterer Versuch war eine methode "redrawing" in der Klasse GuiInterface zu implementieren und zu rufen leider auch ohne erfolg. Ich hoffe Ihr könnt mir weiterhelfen.
Java:
public DBPlot() {
user = System.getProperty("user.name"); // user von system bekommen
try {
SearchList = this.getUserSearchlist(user);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Container content = frame.getContentPane();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
content.add(new GuiInterface());
GraphLayoutSelector.InputtextF.addActionListener(this); // addDocumentListener(new DocumentListener() {}) addActionListener(this) == "A0")
GraphLayoutSelector.clearbutton.addActionListener(this);
GraphLayoutSelector.GraphSlider.addChangeListener(this);
frame.addWindowListener(new WindowHandler());
//actionPerformed(null);
frame.pack();
frame.setVisible(true);
}
/**
* Class WindowHandler: Is an internal class of an Window GUI Listner. Which listen if the gui closed. If the gui closed than store the search behaivior.
*
*
*/
class WindowHandler extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
try {
setUserSearchlist(user);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0); // End the application
}
}
/**
* Funciton actionPerformed: Is an Listner of the Clear Button and Input Textfield.
*
* Parameter ce: Is the Changed Slider value.
*/
@Override
public void actionPerformed(ActionEvent e) { // after an Enter, should be searched in Graph DB
if(e.getSource() == GraphLayoutSelector.InputtextF)
{
if((!SearchList.contains(GraphLayoutSelector.InputtextF.getText()))&& !GraphLayoutSelector.InputtextF.getText().isEmpty())
SearchList.add(GraphLayoutSelector.InputtextF.getText());
GraphLayoutSelector.InputtextF.setText("");
GraphLayoutSelector.treeButton.setEnabled(true);
GraphLayoutSelector.radialButton.setEnabled(true);
plotgraph(SearchList.get(SearchList.size() - 1));
}else if(e.getSource()== GraphLayoutSelector.clearbutton)// starts an new search
{
GuiInterface.graph = GraphHandler.createForestTestempty();
GuiInterface.vv.getComponent().removeAll();
GuiInterface.panel.revalidate();
GuiInterface.panel.repaint();
GuiInterface.redrawing();
frame.revalidate();
frame.repaint();
}
System.out.println("Im here ");
}
public static void main(String[] args) throws Exception{
DBPlot PlotGui = new DBPlot();
}
}
Code:
public class GuiInterface extends JPanel {
SplitterContext<Object> splitterContext =
SplitterContext.of(new RStarLeafSplitter<>(), new RStarSplitter<>());
final DefaultGraphMouse<String, Integer> graphMouse = new DefaultGraphMouse<>();
public static Graph<String, Integer> graph;
public static VisualizationScrollPane panel;
static Predicate<Integer> edgePredicate = e -> e < 100;
private static final Logger log = LoggerFactory.getLogger(GuiInterface.class);
public static VisualizationViewer<String, Integer> vv;
/** the visual component and renderer for the graph */
Dimension layoutSize = new Dimension(700, 700);
Dimension viewSize = new Dimension(700, 700);
public static void redrawing()
{
vv.repaint();
//panel.removeC
panel.validate();
panel.repaint();
}
public GuiInterface() { setLayout(new BorderLayout());
graph = GraphHandler.createForestTest();
GraphBuilder<String, Integer, Graph<String, Integer>> tree =
GraphTypeBuilder.<String, Integer>forGraphType(DefaultGraphType.dag())
.edgeSupplier(SupplierUtil.createIntegerSupplier())
.buildGraphBuilder();
vv =
VisualizationViewer.builder(graph)
.layoutAlgorithm(new StaticLayoutAlgorithm<>())
.layoutSize(layoutSize)
.viewSize(viewSize)
.graphMouse(graphMouse)
.build();
vv.addPreRenderPaintable(
new LayoutPaintable.LayoutBounds(
vv.getVisualizationModel(), vv.getRenderContext().getMultiLayerTransformer()));
Box controls = Box.createHorizontalBox();
controls.add(
GraphControlHelpers.getCenteredContainer(
"Layout Controls", GraphLayoutSelector.builder(vv).initialSelection(1).build()));
controls.add(GraphControlHelpers.getCenteredContainer("Zoom",GraphControlHelpers.getZoom(vv)));
add(controls, BorderLayout.SOUTH);
panel = new VisualizationScrollPane(vv);
redrawing();
repaint();
add(panel);
}