button3!
parent
91336d513d
commit
e80dfebed5
23
Edge.java
23
Edge.java
|
@ -4,23 +4,38 @@ public class Edge implements Comparable
|
|||
private Node ende;
|
||||
private int wert;
|
||||
private boolean gerichtet;
|
||||
|
||||
|
||||
public Edge(Node a, Node e, int w, boolean r){
|
||||
this.anfang = a;
|
||||
this.ende = e;
|
||||
this.wert = w ;
|
||||
this.gerichtet = r;
|
||||
}
|
||||
|
||||
|
||||
public Node getAnfang(){return this.anfang;}
|
||||
|
||||
public Node getEnde(){return this.ende;}
|
||||
|
||||
public int getWert(){return this.wert;}
|
||||
|
||||
public boolean istGerichtet(){return this.gerichtet;}
|
||||
|
||||
|
||||
public int compareTo(Object o) {
|
||||
Edge other = (Edge)o;
|
||||
if(this.wert < other.wert)return -1;
|
||||
if(this.wert > other.wert)return 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public String toString(){
|
||||
/*String ergebnis = "E ";
|
||||
ergebnis += anfang.getNumber() + " ";
|
||||
ergebnis += ende.getNumber() + " ";
|
||||
if (this.gerichtet) ergebnis += "1 ";
|
||||
else ergebnis += "0 ";
|
||||
ergebnis += this.wert;
|
||||
return ergebnis; */
|
||||
|
||||
return "E " + anfang.getNumber() + " " + ende.getNumber() + " " + wert + " " + (gerichtet ? 1 : 0);
|
||||
}
|
||||
}
|
58
Graph.java
58
Graph.java
|
@ -1,6 +1,8 @@
|
|||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Collections;
|
||||
import java.io.*;
|
||||
|
||||
public class Graph
|
||||
{
|
||||
private ArrayList<Node> nodes;
|
||||
|
@ -36,6 +38,7 @@ public class Graph
|
|||
public ArrayList<Edge> getEdges(){
|
||||
return this.edges;
|
||||
}
|
||||
|
||||
public void addEdge(int a, int e, int w, boolean g){
|
||||
Node an = null;
|
||||
Node en = null;
|
||||
|
@ -70,6 +73,7 @@ public class Graph
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ArrayList<Node> breitensuche(int start){
|
||||
ArrayList<Node> ergebnis = new ArrayList<Node>();
|
||||
LinkedList<Node> q = new LinkedList<Node>();
|
||||
|
@ -90,7 +94,26 @@ public class Graph
|
|||
|
||||
return ergebnis;
|
||||
}
|
||||
|
||||
public void tiefensucheGraphisch(){
|
||||
ArrayList<Node> ergebnis = new ArrayList<Node>();
|
||||
LinkedList<Node> q = new LinkedList<Node>();
|
||||
//q.add(this.getNode(start));
|
||||
|
||||
while(!q.isEmpty()){
|
||||
Node aktuell = q.removeLast();
|
||||
if (ergebnis.contains(aktuell)){
|
||||
continue;
|
||||
}
|
||||
|
||||
ArrayList<Node> erreichbar = aktuell.getTargets();
|
||||
Collections.sort(erreichbar, Collections.reverseOrder());
|
||||
q.addAll(erreichbar);
|
||||
|
||||
ergebnis.add(aktuell);
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList<Node> tiefensuche(int start){
|
||||
ArrayList<Node> ergebnis = new ArrayList<Node>();
|
||||
LinkedList<Node> q = new LinkedList<Node>();
|
||||
|
@ -212,4 +235,39 @@ public class Graph
|
|||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
public void save (String filename){
|
||||
try{
|
||||
FileWriter f = new FileWriter(filename);
|
||||
for(Node n : this.nodes){
|
||||
f.write(n.toString() + "\n");
|
||||
}
|
||||
for(Edge e : this.edges){
|
||||
f.write(e.toString() + "\n");
|
||||
}
|
||||
f.close();
|
||||
}catch(IOException e){}
|
||||
|
||||
}
|
||||
|
||||
public int load (String filename){
|
||||
int max = 0;
|
||||
try{
|
||||
BufferedReader f = new BufferedReader(new FileReader(filename));
|
||||
String line = f.readLine();
|
||||
while(line != null){
|
||||
String[] data = line.split(" ");
|
||||
if(data[0].equals("N")) {
|
||||
this.addNode(Integer.parseInt(data[1]),Integer.parseInt(data[2]),Integer.parseInt(data[3]));
|
||||
if (Integer.parseInt(data[1]) > max) max = Integer.parseInt(data[1]);
|
||||
}
|
||||
if(data[0].equals("E")) {
|
||||
this.addEdge(Integer.parseInt(data[1]),Integer.parseInt(data[2]),Integer.parseInt(data[3]),data[4].equals("1"));
|
||||
}
|
||||
line = f.readLine();
|
||||
}
|
||||
f.close();
|
||||
} catch(IOException e){}
|
||||
return max;
|
||||
}
|
||||
}
|
||||
|
|
20
MyPanel.java
20
MyPanel.java
|
@ -13,6 +13,7 @@ public class MyPanel extends JPanel
|
|||
private Node nmove;
|
||||
private int x;
|
||||
private int y;
|
||||
|
||||
public MyPanel(){
|
||||
g = new Graph();
|
||||
nr = 1;
|
||||
|
@ -22,7 +23,7 @@ public class MyPanel extends JPanel
|
|||
start = g.getNode(x, y);
|
||||
if ( start == null){
|
||||
g.addNode(nr, x, y);
|
||||
nr++;
|
||||
nr++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,6 +41,7 @@ public class MyPanel extends JPanel
|
|||
start = null;
|
||||
nmove=null;
|
||||
}
|
||||
|
||||
public void move (int x, int y){
|
||||
this. x = x;
|
||||
this. y = y;
|
||||
|
@ -52,6 +54,22 @@ public class MyPanel extends JPanel
|
|||
public void right(int x, int y){
|
||||
this.nmove = g.getNode(x,y);
|
||||
}
|
||||
|
||||
public void save(){
|
||||
this.g.save("test.txt");
|
||||
}
|
||||
|
||||
public void load(){
|
||||
this. nr = this.g.load("test.txt") +1;
|
||||
}
|
||||
|
||||
public void clear(){
|
||||
g = new Graph();
|
||||
}
|
||||
|
||||
public void tiefensuche(){
|
||||
g.tiefensuche(1);
|
||||
}
|
||||
@Override
|
||||
protected void paintComponent(Graphics g){
|
||||
super.paintComponent(g);
|
||||
|
|
|
@ -63,4 +63,8 @@ public class Node implements Comparable
|
|||
if(this.number > other.number)return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String toString(){
|
||||
return "N " + this.number + " " + this.x + " " + this.y;
|
||||
}
|
||||
}
|
||||
|
|
34
Window.java
34
Window.java
|
@ -8,6 +8,9 @@ public class Window implements ActionListener
|
|||
private MyPanel panel;
|
||||
private JButton button;
|
||||
private JButton button2;
|
||||
private JButton button3;
|
||||
private JButton button4;
|
||||
|
||||
public Window(){
|
||||
fenster = new JFrame("Mein erstes Fenster");
|
||||
fenster.setSize(400,400);
|
||||
|
@ -22,14 +25,23 @@ public class Window implements ActionListener
|
|||
fenster.add(panel, BorderLayout.CENTER);
|
||||
panel.setBackground(new Color(100,100,100));
|
||||
|
||||
button = new JButton ("Linie");
|
||||
button = new JButton ("Speichern");
|
||||
top.add(button);
|
||||
button.addActionListener(this);
|
||||
|
||||
button2 = new JButton("Kreis");
|
||||
button2 = new JButton("Laden");
|
||||
top.add(button2);
|
||||
button2.addActionListener(this);
|
||||
|
||||
|
||||
button3 = new JButton("Clear");
|
||||
top.add(button3);
|
||||
button3.addActionListener(this);
|
||||
|
||||
button4 = new JButton("Tiefensuche");
|
||||
top.add(button4);
|
||||
button4.addActionListener(this);
|
||||
|
||||
|
||||
fenster.setVisible(true);
|
||||
panel.addMouseMotionListener(new MouseMotionListener(){
|
||||
public void mouseDragged(MouseEvent e){
|
||||
|
@ -68,9 +80,19 @@ public class Window implements ActionListener
|
|||
}
|
||||
|
||||
public void actionPerformed(ActionEvent e){
|
||||
if (e.getSource() == this.button)
|
||||
if (e.getSource() == this.button2)
|
||||
fenster.repaint();
|
||||
if (e.getSource() == this.button) {
|
||||
panel.save();
|
||||
}
|
||||
if (e.getSource() == this.button2) {
|
||||
panel.load();
|
||||
}
|
||||
if(e.getSource() == this.button3){
|
||||
panel.clear();
|
||||
}
|
||||
if(e.getSource() == this.button4){
|
||||
panel.tiefensuche();
|
||||
}
|
||||
fenster.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue