Hallo
Ich hab ein folgendes Problem. Ich hab ein Frame mit 4 verschiedene Tabs erstellt
wobei in jedem Tab Plots sind. die QuickSortPlots sieht so aus.
Also sowie ihr merken könnt, hier werden verschiedene Punkte erstellt, aber wenn ich von einem zu dem anderen Tab wechsele, und dann wieder zu dem vorherigen Tab wechsele, dann werde ich nicht vollständig das von paint() in bildschirm bekommen, und es wird noch mal der Objekt erstellt und aufgerufen(so meine ich mindestens, da ganz andere Punkte bekomme). Ich will nicht die Objekte nach jedem Wechsel von Tabs aufgerufen werden, und jedes Mal neue Punkte erstellen. Also, keine Änderungen mehr solange das Fenster nicht geschlossen ist. Ist es überhaupt möglich, oder vergesse ich noch 'was zu machen.
Danke im voraus
kaneb
edit: Das URL von JARDatei http://maloku.info/RunProg.jar
Ich hab ein folgendes Problem. Ich hab ein Frame mit 4 verschiedene Tabs erstellt
Code:
public class RunProg extends JFrame {
public RunProg(String titel){
setVisible(true);
setTitle(titel);
setPreferredSize(new Dimension(1000,700));
JTabbedPane jTabbedPane = new javax.swing.JTabbedPane();
setDefaultCloseOperation(EXIT_ON_CLOSE);
jTabbedPane.add("Random Sorted Array", new QuickSortPlots(CreateArray.createRandomSortedArray(500)));
jTabbedPane.add("Nearly Sorted Array", new QuickSortPlots(CreateArray.createNearlySortedArray(500)));
jTabbedPane.add("Reversed Sorted Array", new QuickSortPlots(CreateArray.createReversedSortedArray(500)));
jTabbedPane.add("Sorted Array", new QuickSortPlots(CreateArray.createSortedArray(500)));
getContentPane().add(jTabbedPane, BorderLayout.CENTER);
pack();
}
public static void main(String[] arg){
new RunProg("QuickSort");
}
}
wobei in jedem Tab Plots sind. die QuickSortPlots sieht so aus.
Code:
public class QuickSortPlots extends Container {
int[] arr;
long comp1,comp2,exch1,exch2,start,stop;
public QuickSortPlots(int[] arr){
this.arr=arr;
setFocusable(false);
comp1=0; comp2=0;
exch1=0; exch2=0;
start=0; stop=0;
}
public void paint(Graphics g){
g.drawString("Werte", 10, 235);
g.drawString("d. Arrays",1, 250);
g.drawString(arr.length+"", 20, 40);
g.drawString("A[i]", 60, 40);
g.drawString("0",30,555);
g.drawString("Laenge des Arrays", 230, 570);
g.drawString(arr.length+"", 550, 570);
g.drawString("i", 550, 540);
//Point(50,400) is (0,0)
g.drawLine(50, 50, 50, 550);
g.drawLine(50, 550, 550, 550);
int x=50; int y=550;
double pointHelper = 500/arr.length;
//paint unsorted array
g.setColor(Color.RED);
for(int i=0;i<arr.length;i++){
int x1 = (int)(x+i*pointHelper);
int y1 = (int)-((pointHelper*arr[i])-y);
g.drawOval(x1, y1, 1, 1);
}
comp1=QuickSort.comparisons;
exch1=QuickSort.exchanges;
start = System.currentTimeMillis();
// QuickSort quicksort= new QuickSort();
QuickSort.quicksort(arr);
stop = System.currentTimeMillis();
comp2=QuickSort.comparisons;
exch2=QuickSort.exchanges;
double elapsed = stop-start;
g.setColor(Color.BLUE);
for(int i=0;i<arr.length;i++){
int x1 = (int)(x+i*pointHelper);
int y1 = (int)-((pointHelper*arr[i])-y);
g.drawOval(x1, y1, 1, 1);
}
Font font = new Font(null,0,20);
g.setFont(font);
g.setColor(Color.DARK_GRAY);
g.drawString("STATISTICS", 720, 50);
g.setColor(Color.black);
g.setFont(new Font(null,0,20));
g.drawString("Time: "+elapsed+" nanosec.", 720, 80);
g.drawString("Comparisons: "+(comp2-comp1), 720, 100);
g.drawString("Exchanges: "+(exch2-exch1), 720, 120);
}
}
Also sowie ihr merken könnt, hier werden verschiedene Punkte erstellt, aber wenn ich von einem zu dem anderen Tab wechsele, und dann wieder zu dem vorherigen Tab wechsele, dann werde ich nicht vollständig das von paint() in bildschirm bekommen, und es wird noch mal der Objekt erstellt und aufgerufen(so meine ich mindestens, da ganz andere Punkte bekomme). Ich will nicht die Objekte nach jedem Wechsel von Tabs aufgerufen werden, und jedes Mal neue Punkte erstellen. Also, keine Änderungen mehr solange das Fenster nicht geschlossen ist. Ist es überhaupt möglich, oder vergesse ich noch 'was zu machen.
Danke im voraus
kaneb
edit: Das URL von JARDatei http://maloku.info/RunProg.jar