Hallo,
ich nutze die ZEST Bibliothek, die auf SWT aufbaut zum Darstellen von Graphen. Das funktioniert soweit auch. Nun würde ich gerne dazu eine GUI erstellen, mit der ich zB. eine Datei auswählen kann, die über Zest als Graph dargestellt wird. Ich habe bisher noch sehr wenig Erfahrung mit GUI und Threads.
Für mein Minimalbeispiel hab ich folgende Klassen:
MainTest.java - eine Klasse mit der Mainmethode
MyGUI.java - Darstellung der GUI und Aufruf der ZEST Bibliothek zur Visualisierung des Graphen
Wenn ich das ganze ausführe, hängt sich aber meine Anwendung auf. Hat jemand ne Idee? Ein System.out.prinln bekomme ich auch nicht. Ich hab das Gefühl, dass er bei mir irgendwo im Thread feststeckt. Im Windows Task Manager läuft ein JavaThread auch auf 25% Auslastung sobald ich auf createGraph klicke
ich nutze die ZEST Bibliothek, die auf SWT aufbaut zum Darstellen von Graphen. Das funktioniert soweit auch. Nun würde ich gerne dazu eine GUI erstellen, mit der ich zB. eine Datei auswählen kann, die über Zest als Graph dargestellt wird. Ich habe bisher noch sehr wenig Erfahrung mit GUI und Threads.
Für mein Minimalbeispiel hab ich folgende Klassen:
MainTest.java - eine Klasse mit der Mainmethode
MyGUI.java - Darstellung der GUI und Aufruf der ZEST Bibliothek zur Visualisierung des Graphen
Java:
public class MainTest {
public static void main(String[] args) {
myGUI GUI = new myGUI(); //Erstelle die GUI
while(GUI.getFilePath()==null); //Warte bis über JFileChooser eine Datei ausgewählt wurde
System.out.println(GUI.getFilePath());
}
}
Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.zest.core.widgets.Graph;
public class myGUI{
private String FilePath = null;
private Graph g;
private Display d;
public myGUI(){
createWindow();
}
private void createWindow(){
JFrame frame= new JFrame("MYGUI");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
JPanel buttonPanel = new JPanel(new GridLayout(2,1));
final JButton fileButton = new JButton("Open File");
final JButton createButton = new JButton("Create Graph");
buttonPanel.add(fileButton);
buttonPanel.add(createButton);
frame.getContentPane().add(buttonPanel);
ActionListener fileListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JFileChooser chooser = new JFileChooser();
int operation = chooser.showDialog(null,"Choose File");
if(operation==JFileChooser.APPROVE_OPTION){
FilePath = chooser.getSelectedFile().getAbsolutePath();
}
}
};
ActionListener createListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
createGraph();
}
};
createButton.addActionListener(createListener);
fileButton.addActionListener(fileListener);
frame.pack();
frame.setVisible(true);
}
public void createGraph(){
d = new Display();
Shell shell = new Shell(d);
shell.setText("myGraph");
shell.setLayout(new FillLayout());
g = new Graph(shell, SWT.NONE);
shell.open();
while (!shell.isDisposed()) {
if (!d.readAndDispatch()) {
d.sleep();
}
}
}
public String getFilePath(){
return this.FilePath;
}
}
Wenn ich das ganze ausführe, hängt sich aber meine Anwendung auf. Hat jemand ne Idee? Ein System.out.prinln bekomme ich auch nicht. Ich hab das Gefühl, dass er bei mir irgendwo im Thread feststeckt. Im Windows Task Manager läuft ein JavaThread auch auf 25% Auslastung sobald ich auf createGraph klicke
Zuletzt bearbeitet: