GUI

Status
Nicht offen für weitere Antworten.
M

mausi

Gast
:x hallo ich bin hier fastam verzweifeln und bräuchte bitte mal dringend hilfe
also ich muss fürs sofwarepraktikum eine simulation einer eisenbahn implementieren jeden falls hab ich n editormodus einen simulator modus und GUI und Main...
so die GUI fängt so an
public abstract class GUI extends JFrame implements ActionListener
2.Datei
public class EditorGUI
extends GUI {
3.
public class SimulatorGUI
extends GUI {
so nu die Fehlerausgabe
EditorGUI is not abstract and does not override abstract method createMenu() in GUI

erst hat alles funktioniert und jetzt kommt diese meldung
ich verstehe das nicht,hatte mir auch ne funktionierende gespeichert bloss wenn ich die jetzt kompiliere kommt auch diese meldung,ich verstehe das nicht...
bitte hilfe :(
 

L-ectron-X

Gesperrter Benutzer
Du musst in den von GUI abgeleiteten Klassen die abstrakten Methoden (createMenu() ) überschreiben, oder diese sonst ebenfalls abstract deklarieren.
 

foobar

Top Contributor
EditorGUI is not abstract and does not override abstract method createMenu() in GUI
Da hast du doch schon die Antwort. Du mußt die Methode createMenu implementieren oder die Klasse als abstract deklarieren.
 
G

Guest

Gast
na neee die funktionen die in editorGUi z.Bsp sind sind
protected JPanel createButtonBar(int nr) {
protected JMenuBar createMenu() {
und wenn ich editorGUI und SimulatorGUI abstract mache dann kann ich nich mehr so zugreifen
ausserdem ich hab ne komplette lösung und will mir erstma nur die GUI rausziehen aber das geht nich so einfach und dort in der lösung sind die funktionen auch so deswegen versteheh ich es nicht
 
B

bygones

Gast
überprüf ob die Signaturen der Methoden übereinstimmen !
Ansonsten poste mal den Code der Klassen - denn Java irrt sich eigentlich nie... es wird verlangt dass die abstrakte Methode implementiert wird und das hast du nicht !
 
M

mausi

Gast
Code:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.UIManager;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;

public abstract class GUI
    implements ActionListener, ChangeListener {
	JFrame f = new JFrame();
		
	Container contpane;
  // Standardkonstruktor
  public GUI() {
    try {
      UIManager.setLookAndFeel(
          "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
      jbInit();
      f.setUndecorated(true);
      f.addWindowFocusListener(new WindowAdapter(){
      	public void windowLostFocus(WindowEvent e) {
        f.setVisible(false);
      }
      });
            
           
    }//try
    catch (Exception e) {
      e.printStackTrace();
    }//catch
  }//GUI
  // Komponenten werden initialisiert
  private void jbInit() throws Exception {
    JFrame mainFrame = new JFrame();
    mainFrame.setTitle("ModellEisenBahn-Simulation");
    mainFrame.setResizable(false);
    mainFrame.setUndecorated(false);

    mainFrame.setSize(1400, 1050); 
    
    JPanel buttonBar1 = createButtonBar(1);
    JPanel buttonBar2 = createButtonBar(2); 
    mainFrame.getContentPane().setLayout(new BorderLayout());
    mainFrame.getContentPane().add(buttonBar1, BorderLayout.WEST);
    mainFrame.getContentPane().add(buttonBar2, BorderLayout.EAST); // Buttons am linken Rand      
  }//jbInit      
  
  // ButtonBars werden in EditorGUI bzw. SimulatorGUI definiert
  protected abstract JPanel createButtonBar(int nr);

  // Menues werden in EditorGUI bzw. SimulatorGUI definiert
  protected abstract JMenuBar createMenu();  
  // mainFrame sichtbar machen
  public setVisible(boolean visible) {
    mainFrame.setVisible(visible);
  }
  //wird aufgerufen wenn ein Button des Hauptfensters gedrückt wird
  public void actionPerformed(ActionEvent events) {
	System.out.println(events.getActionCommand());
	String command = events.getActionCommand();
    try {
      JComboBox cb = (JComboBox) events.getSource();
      command = (String) cb.getSelectedItem();
    }
    catch (Exception ex) {}
    if (command.equals("Beenden")) {
      System.exit(0);
    }
}      
 }//class
warum kann er bei public setVisible() mainFrame nicht erkennen????
 
B

bygones

Gast
weil mainFrame eine lokale Variable innerhalb von jbInit ist... daher kennt es keine Methode außerhalb von jbInit...
 
M

mausi

Gast
na und wie kann ich nun setVisible definieren so das sie auf mainframe zugreifen kann?
 
B

bygones

Gast
mhm - du hast zwei Frames in der Klasse rumfliegen
f und mainFrame
ich denke mal nicht dass du beide brauchst... also würde ich einen rausschmeißen. Einer bleibt als instanzvariable und dann kannst du auch alles mit diesem Frame in der Klasse machen was du willst
 
M

mausi

Gast
alles klar hab ich gemacht so nu weiter zu EditorGUI
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class EditorGUI
    extends GUI {
        
  public EditorGUI() {
    super();
    }        
private void setCtrlAccelerator(JMenuItem mi, char acc) {
	KeyStroke ks = KeyStroke.getKeyStroke(acc, Event.CTRL_MASK);
	mi.setAccelerator(ks);
}	

//erzeugt eine Menuebar mit 2 Menues einmal Datei und einmal Hilfe
protected JMenuBar haengeMenuAn() {
	
	JMenuBar menuLeiste = new JMenuBar();
	//Datei
	JMenu datei = new JMenu("Datei");
	datei.setMnemonic('D');
	
		//Datei/Öffnen
		JMenuItem mi;
		mi = new JMenuItem("Öffnen", 'f');
		setCtrlAccelerator(mi, 'O');
		mi.addActionListener(this);
		datei.add(mi);
		
		//Datei/Speichern
		mi = new JMenuItem("Speichern", 'p');
		setCtrlAccelerator(mi, 'S');
		mi.addActionListener(this);
		datei.add(mi);
	        
	        //Datei/Beenden + Funktion das beendet wird wenn man daruf klickt
	        mi = new JMenuItem("Beenden", 'e');
		setCtrlAccelerator(mi, 'B');
		mi.addActionListener(this);
		datei.add(mi);
	menuLeiste.add(datei);
		
	//Hilfe	
	JMenu hilfe = new JMenu("Hilfe");
	hilfe.setMnemonic('H');	
	menuLeiste.add(hilfe);
    
    // Hilfe/Info
    mi = new JMenuItem("Info",'n');
    setCtrlAccelerator(mi, 'I');
    mi.addActionListener(this);
    hilfe.add(mi);
    menuLeiste.add(hilfe);    
	
	return  menuLeiste;
}
    }
hier zeigts EditorGUI.java:7: EditorGUI is not abstract and does not override abstract method createMenu() in GUI
public class EditorGUI
^
1 error
 

L-ectron-X

Gesperrter Benutzer
Ich kann in dieser Klasse keine Methode createGUI() finden.
Scroll mal nach oben, da steht, warum es nicht geht.
Oder habe ich etwas übersehen? ???:L
 
B

bygones

Gast
L-ectron-X hat gesagt.:
Ich kann in dieser Klasse keine Methode createGUI() finden.
Scroll mal nach oben, da steht, warum es nicht geht.
Oder habe ich etwas übersehen? ???:L
ne bist zwar alt - aber noch net blind *duck* :wink:
 
M

mausi

Gast
ich habs blöder fehler in der gui muss natürlich stehen
// Menues werden in EditorGUI bzw. SimulatorGUI definiert
protected abstract JMenuBar haengeMenuAn();

so aber noch der fehler
EditorGUI.java:7: EditorGUI is not abstract and does not override abstract method stateChanged(javax.swing.event.ChangeEvent) in javax.swing.event.ChangeListener
public class EditorGUI
^
1 error
 

L-ectron-X

Gesperrter Benutzer
Wenn Du den javax.swing.event.ChangeListener in Deiner Klasse implementierst musst Du auch seine stateChanged()-Methode überschreiben.
Ich glaube Dir ist nicht klar, wie man mit Interfaces und abstrakten Klassen umgeht.
Soll man Dir dahin gehend vielleicht etwas erklären, um die Verständnisprobleme zu beseitigen?
 
M

mausi

Gast
was macht bitte diese funktion ma in einfachen worten ausgedrückt
Code:
protected void paintComponent(Graphics g) {
    int w = getWidth();
    int h = getHeight();
    int leftW = w / 2;
    int topH = h / 2;
    if (d==1){
    	
        g.setColor(Color.white);
    	g.fillRect(0, 0, w, h);
    	g.setColor(Color.LIGHT_GRAY);
    	int hoehe = 600;
    	int breite = 960;
    	int x = 0;
    	int y = 0;
		
	for (int i = x+5 ; i < x+w ; i++)
	{
		g.drawLine(i, y, i, y+h);
		i--;
		i=i+10;
	}
		
	for (int i = y+5 ; i < y+h ; i++)
	{
		g.drawLine(x, i, x+w, i);
		i--;
		i=i+10;
	}
    }else {
    	Graphics2D g2 = (Graphics2D) g;
	loadImage();
   	g2.drawImage(img, 1,1,null);
	}
    }
 
G

Guest

Gast
ich hänge hier schon ewig fest und komm nich weiter also erstma schilder ich mein prob,also ich hab ne GUI,ne EditorGUI und ne SimulatorGUI so
Code:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.UIManager;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;

public abstract class GUI
    implements ActionListener {
	JFrame f = new JFrame();
		
	//Container contpane;
  // Standardkonstruktor
  public GUI() {
    try {
      UIManager.setLookAndFeel(
          "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
      jbInit();
      f.setUndecorated(true);
      f.addWindowFocusListener(new WindowAdapter(){
      	public void windowLostFocus(WindowEvent e) {
        f.setVisible(false);
      }
      });
      	  mainFrame.addWindowListener(new WindowAdapter() {
      			public void windowClosing(WindowEvent event) {
        			System.exit(0);
      			}
  		}
  		); 
    zeichenEbene2.addFocusListener(new FocusAdapter(){
      	public void focusGained(FocusEvent e) {
        System.out.println("Focus");
        if(!umgeschalten){
        umgeschalten = true;
        change();
 	}
     
      }
      });
            
           
    }//try
    catch (Exception e) {
      e.printStackTrace();
    }//catch
  }//GUI
  
  // Komponenten werden initialisiert
  private void jbInit() throws Exception {
    mainFrame = new JFrame();
    mainFrame.setTitle("ModellEisenBahn-Simulation");
    mainFrame.setResizable(false);
    mainFrame.setUndecorated(false);

    mainFrame.setSize(1400, 1050); 
    
    JPanel buttonBar1 = createButtonBar(1);
    JPanel buttonBar2 = createButtonBar(2); 
      
    contentPane = mainFrame.getContentPane();
    contentPane.removeAll();      
    contentPane.setLayout(new BorderLayout());
    contentPane.add(buttonBar1, BorderLayout.WEST); // Buttons am linken Rand
    contentPane.add(buttonBar2, BorderLayout.SOUTH); // Buttons am unteren Rand
    contentPane.add(zeichenEbene, BorderLayout.CENTER); // Zeichenebene
    
    // erzeuge Menu
    mainFrame.setJMenuBar(haengeMenuAn());    
  }//jbInit      
  
  // ButtonBars werden in EditorGUI bzw. SimulatorGUI definiert
  protected abstract JPanel createButtonBar(int nr);

  // Menues werden in EditorGUI bzw. SimulatorGUI definiert
  protected abstract JMenuBar haengeMenuAn();  
  
  // mainFrame sichtbar machen
  public void setVisible(boolean visible) {
    mainFrame.setVisible(visible);
  }
  public void focusLost(FocusEvent e) {
        f.setVisible(false);
      }  
  //wird aufgerufen wenn ein Button des Hauptfensters gedrückt wird
  public void actionPerformed(ActionEvent events) {
	System.out.println(events.getActionCommand());
	String command = events.getActionCommand();
    try {
      JComboBox cb = (JComboBox) events.getSource();
      command = (String) cb.getSelectedItem();
    }
    catch (Exception ex) {}
    if (command.equals("Beenden")) {
      System.exit(0);
    }
   else if (command.equals("Info")) {
      AboutBox dlg = new AboutBox(mainFrame, "Hilfe", true);
      dlg.show();
    } 
    else if (command.equals("Neu")) {
      zeichenEbene.removeAll();
    }
    else if (command.equals("Simulator")) {
      mainFrame.setVisible(false);
      contentPane = mainFrame.getContentPane();
      contentPane.remove(zeichenEbene);
      zeichenEbene2.setVisible(true);
      contentPane.add(zeichenEbene2, BorderLayout.CENTER);
      zeichenEbene.setVisible(false);
      
      mainFrame.setVisible(true);
      mainFrame.setVisible(false);
      mainFrame.setVisible(true);
      //copyComponents();
           
      } 
  else if (command.equals("Editor")) {
      zeichenEbene2.setVisible(false);
      main.changeGUI("edit");
      
    }      
        
} 
 
 public void change()  {
  	
  	main.changeGUI("simulate");
  	
  }
  private JFrame mainFrame;
  protected PaintSurface zeichenEbene = new PaintSurface(1);
  protected PaintSurface zeichenEbene2 = new PaintSurface(0);
  protected Container contentPane;  
  public boolean umgeschalten = false;        
 }//class

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.util.*;

public class EditorGUI
    extends GUI {
        
  public EditorGUI() {
    super();
    }        
private void setCtrlAccelerator(JMenuItem mi, char acc) {
	KeyStroke ks = KeyStroke.getKeyStroke(acc, Event.CTRL_MASK);
	mi.setAccelerator(ks);
}	

//erzeugt eine Menuebar mit 2 Menues einmal Datei und einmal Hilfe
protected JMenuBar haengeMenuAn() {
	
	JMenuBar menuLeiste = new JMenuBar();
	//Datei
	JMenu datei = new JMenu("Datei");
	datei.setMnemonic('D');
	
		//Datei/Öffnen
		JMenuItem mi;
		mi = new JMenuItem("Öffnen", 'f');
		setCtrlAccelerator(mi, 'O');
		mi.addActionListener(this);
		datei.add(mi);
		
		//Datei/Speichern
		mi = new JMenuItem("Speichern", 'p');
		setCtrlAccelerator(mi, 'S');
		mi.addActionListener(this);
		datei.add(mi);
	        
        //Datei/Beenden + Funktion das beendet wird wenn man daruf klickt
        mi = new JMenuItem("Beenden", 'e');
		setCtrlAccelerator(mi, 'B');
		mi.addActionListener(this);
		datei.add(mi);
	    menuLeiste.add(datei);
        
       JMenuItem me = new JMenuItem("Start Simulation");
       me.setActionCommand("Simulator");
       me.addActionListener(this);
       me.setMnemonic('i');
       menuLeiste.add(me);        
		
	//Hilfe	
	JMenu hilfe = new JMenu("Hilfe");
	hilfe.setMnemonic('H');	
	menuLeiste.add(hilfe);
    
    // Hilfe/Info
    mi = new JMenuItem("Info",'n');
    setCtrlAccelerator(mi, 'I');
    mi.addActionListener(this);
    hilfe.add(mi);
    menuLeiste.add(hilfe);    
	
	return  menuLeiste;
}
    protected JPanel createButtonBar(int nr) {
    JPanel buttonPanel = new JPanel();
    switch (nr) {
      case 1:

        // Grösse des Panels setzen
        buttonPanel.setPreferredSize(new Dimension(100, 350));
        // Layout setzen
        buttonPanel.setLayout(new GridLayout(14, 1));
        buttonPanel.setBackground(Color.WHITE);
        buttonPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        buttonPanel.add(new JLabel(""));
        
        
        JButton button = new JButton();
        ImageIcon icon = new ImageIcon(getClass().getResource("GeradeLang.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        button.setSize(100, 50);
        buttonPanel.add(button);
	
	    icon = new ImageIcon(getClass().getResource("GeradeKurz.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);
      
        icon = new ImageIcon(getClass().getResource("Kurve75R1.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);
        
        icon = new ImageIcon(getClass().getResource("Kurve15R1.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);

        icon = new ImageIcon(getClass().getResource("Kurve30R1.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);

        icon = new ImageIcon(getClass().getResource("Kurve30R2.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);
        
        icon = new ImageIcon(getClass().getResource("Kurve30R3.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);
        
        icon = new ImageIcon(getClass().getResource("WeicheLinks.jpg"));
        JButton weicheL = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(weicheL);
        
        icon = new ImageIcon(getClass().getResource("WeicheRechts.jpg"));
        JButton weicheR = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(weicheR);
        
        icon = new ImageIcon(getClass().getResource("PrellBlock.jpg"));
        button = new JButton(icon);
        button.setBackground(Color.WHITE);
        buttonPanel.add(button);
  
        break;
	

    } // switch
    return buttonPanel;
  }
 /* Diese Methode wird aufgerufen, wenn in main zum Editor-Modus geschalten
   * wird.
   */
  public void setActive() {
    contentPane.remove(2);
    this.setVisible(true);
    zeichenEbene.setVisible(true);
    super.umgeschalten = false;
    contentPane.add(zeichenEbene);
  }
  
 public PaintSurface getZeichenEbene() {
    return zeichenEbene;
  }
  
  public PaintSurface getZeichenEbene2() {
    return zeichenEbene2;
  }
    }

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class SimulatorGUI
    extends GUI {
  public SimulatorGUI(PaintSurface sn) {
    super();
   //setStreckenNetz(sn);
  }      
 
        
 // Erzeugt ein komplettes Menu
  protected JMenuBar haengeMenuAn() {

    // MenueLeiste
    JMenuBar jMenuBar1 = new JMenuBar();

    // MenuePunkt Datei fuellen und zu MenueLeiste hinzufuegen
    JMenu m = new JMenu("Datei");
    m.setMnemonic('d');
    JMenuItem me = new JMenuItem("zum Editor ...");
    me.setActionCommand("Editor");
    me.addActionListener(this);
    me.setMnemonic('e');
    m.add(me);
    JMenuItem mi = new JMenuItem("Beenden");
    mi.addActionListener(this);
    mi.setMnemonic('b');
    m.add(mi);
    jMenuBar1.add(m);

    JMenu m2 = new JMenu("Hilfe");
    m2.setMnemonic('h');
    JMenuItem mi2 = new JMenuItem("Hilfethemen");
    mi2.addActionListener(this);
    mi2.setMnemonic('t');
    m2.add(mi2);
    jMenuBar1.add(m2);

    // MenueLeiste zurueckgeben
    return jMenuBar1;
  } // createMenu
        
 protected JPanel createButtonBar(int nr) {
    JPanel buttonPanel = new JPanel();
    switch (nr) {
      case 1:
        // Grösse des Panels setzen
        buttonPanel.setPreferredSize(new Dimension(60, 350));
        // Layout setzen
        buttonPanel.setLayout(new GridLayout(14, 1));
      
        buttonPanel.setBorder(BorderFactory.createLineBorder(Color.black));

        buttonPanel.add(new JLabel());

        ImageIcon icon = new ImageIcon(getClass().getResource("Lok.gif"));
        JButton lok = new JButton(icon);
        lok.setSize(60, 60);
        lok.setActionCommand("newLok");
        lok.addActionListener(this);
        buttonPanel.add(lok);      
      
        icon = new ImageIcon(getClass().getResource("Wagen.gif"));
        JButton waggon = new JButton(icon);
        waggon.setSize(60, 60);
        waggon.setActionCommand("newWaggon");
        waggon.addActionListener(this);
        buttonPanel.add(waggon);
      
        buttonPanel.add(new JLabel());
        buttonPanel.add(new JLabel());

        JButton button = new JButton("Stop");
        button.setToolTipText("Stoppt die Simulation");
        button.addActionListener(this);
        buttonPanel.add(button);
        break;          
      case 2:          
        buttonPanel.setPreferredSize(new Dimension(150, 350));
        // Layout setzen
        buttonPanel.setLayout(new GridLayout(2, 1));
	
        // in weichenPanel sind die Buttons zum umschalten der Weichen enthalten
        JPanel weichenPanel = new JPanel();		//ein Panel für die Weichenknöpfe wird erstellt
        weichenPanel.setLayout(new GridLayout(3, 3));
     
        JPanel panel;
        for (int i = 1; i < 10; i++) {
          button = new JButton("" + i);
          button.setEnabled(false);
          button.addActionListener(this);
          weichenPanel.add(button);
        }
        buttonPanel.add(weichenPanel); //Buttons für Weichen werden zu buttonPanel hinzugefügt

        JSlider slider;
        JPanel apanel, bpanel, cpanel, sliderPanel;
        JLabel loklabel;
        sliderPanel = new JPanel();
        sliderPanel.setLayout(new GridLayout(1, 3));
        for (int i = 0; i < 3; i++) {
          apanel = new JPanel();
          apanel.setLayout(new GridLayout(1, 2));
          
          bpanel = new JPanel();
          bpanel.setLayout(new GridLayout(1, 1));
          
          slider = new JSlider(1, //orientation,
                               -50, //min,
                              50, //max,
                              0); //value
          slider.setPreferredSize(new Dimension(50, 100));
          slider.setMajorTickSpacing(50);
          slider.setPaintTicks(false);
          slider.setPaintLabels(false);
          slider.setName("Lok_" + i);
          slider.setEnabled(false);
          //slider.addChangeListener(this);
          bpanel.add(slider);
          
          cpanel = new JPanel();
          cpanel.setLayout(new GridLayout(3, 1));
          cpanel.add(new JLabel("L" + (i + 1), 0));
          
          cpanel.add(new JLabel());
          cpanel.add(new JLabel(""));
          
          apanel.add(bpanel);
          apanel.add(cpanel);
          apanel.setBorder(BorderFactory.createLineBorder(Color.gray));
          sliderPanel.add(apanel);
          sliderPanel.setEnabled(false);
        }
        
        buttonPanel.add(sliderPanel); //Slider für die Loks werden zum buttonPanel hinzugefügt
        
        buttonPanel.setBorder(BorderFactory.createLineBorder(Color.black));
        break;
        
        
    } // switch
    return buttonPanel;
  } 
private PaintSurface streckenNetz = new PaintSurface(0);

}

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.util.*;

public class PaintSurface
    extends JPanel {

  private final int DOCK_DISTANCE = 30; // Schwellenwert fürs Andocken
  private final int UEBERLAGERUNG = 150; // Schwellwert fürs Detektieren von Ueberlagerungen

  public boolean isOpaque() {
    return false;
  }

 public PaintSurface(int d){
 	this.d = d;
  }
  
 // public Graph getStreckennetz() {
   // return strecke;
  //}

protected void paintComponent(Graphics g) {
    int w = getWidth();
    int h = getHeight();
    int leftW = w / 2;
    int topH = h / 2;
    if (d==1){
    	
        g.setColor(Color.white);
    	g.fillRect(0, 0, w, h);
    	g.setColor(Color.LIGHT_GRAY);
    	int hoehe = 600;
    	int breite = 960;
    	int x = 0;
    	int y = 0;
		
	for (int i = x+5 ; i < x+w ; i++)
	{
		g.drawLine(i, y, i, y+h);
		i--;
		i=i+10;
	}
		
	for (int i = y+5 ; i < y+h ; i++)
	{
		g.drawLine(x, i, x+w, i);
		i--;
		i=i+10;
	}
    }else {
    	Graphics2D g2 = (Graphics2D) g;
	loadImage();
   	g2.drawImage(img, 1,1,null);
	}
    

/////////////Textur-Test/////////////
//    Graphics2D g2D = (Graphics2D) g;
//
//    // Create a texture paint object and display it in a rectangle
//    // by filling it.
//    BufferedImage bi = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
//    bi.createGraphics().drawImage(Toolkit.getDefaultToolkit().getImage("Gras.jpg"), 0, 0, this);
//
//    Rectangle2D rectangle = new Rectangle2D.Float(0, 0,20*w,20*h);
//
//    TexturePaint tp = new TexturePaint(bi, rectangle);
//    g2D.setPaint(tp);
//    g2D.fill(new Rectangle2D.Float(0, 0, getWidth(), getHeight()));
///////////////////////////////////
  }

  public void paint(Graphics g) {
    super.paint(g);
    setForeground(Color.BLACK);

    Graphics2D g2 = (Graphics2D) g;
    g2.setColor(Color.YELLOW.darker().darker());
  }
  
  /* Java-konforme toString() Methode zum debuggen.
   */
  public String toString() {
    String temp = new String();
    for (int i = 0; i < getComponentCount(); i++) {
      temp = temp + getComponent(i) + "\n";
    }
    return temp;
  }
  public void loadImage() {
    
      img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("background.jpg"));
      
      try {
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(img, 1);
        tracker.waitForID(1);
      }
      catch (Exception ex) {}
      
 
  }

  private int weichenNr;
  private int d = 0;
  private int pos = 9999;
  private double max = 9999;
  private int tup = 9999;
  private int my = 9999;
  //private Object lastPressedEventSource;
  //private Graph strecke = new Graph();
  private Image img;

}

Code:
import java.awt.*;
import java.io.*;
import java.lang.*;


public class main {

 	private static SimulatorGUI simulatorGUI;
 	private static EditorGUI editorGUI;
        
    public static void main(String[] args) {
        String mode="edit";
        editorGUI = new EditorGUI();
        editorGUI.setVisible(true);
        //simulatorGUI = new SimulatorGUI();
        //simulatorGUI.setVisible(true);
  }
  public static void changeGUI(String mode) {
  	if (mode=="edit") {
    	simulatorGUI.setVisible(false);
    	editorGUI.setActive();
    } else if (mode=="simulate") {
    			
			
			
			if (editorGUI.getZeichenEbene2().isShowing()) {
				System.out.println(editorGUI.getZeichenEbene2().isShowing());
			simulatorGUI = new SimulatorGUI(editorGUI.getZeichenEbene());
						
			System.out.println(editorGUI.getZeichenEbene2().isShowing());
			
			try{
				System.out.println ("Main - Image erzeugen");
				Image strecke = new Robot().createScreenCapture(new Rectangle(64,45,1400-64,1050-80));
                //simulatorGUI.setStrecke(strecke);
			} catch (Exception e) {}
			
    	editorGUI.setVisible(false);
    	
    	simulatorGUI.setVisible(true);
    	
	}
	}
	}
   
  public static SimulatorGUI getSimulatorGUI(){
  	return simulatorGUI;
	}
  public static EditorGUI getEditorGUI(){
  	return editorGUI;
	}    
}

irgendwo hier liegt der fehler den ich nich sehe und zwar hab ich im editor modus einen button Simulator oder so und wenn der gedrückt wird soll in den simulatormodus gewechselt werden und das passiert nur teilweise das heisst das paintsurface wechselt nur,wo kann der fehler liegen
 

Wildcard

Top Contributor
Hi!

:###
is jetzt ziemlich viel code also ein schuß ins blaue:

wenn in der GUI die actionPerformed methode aufgerufen wird,
und das action command ("simulate") ist, wird
die main.changeGUI() (oder so) methode nicht aufgerufen.
Vieleicht reicht das schon.
 
Status
Nicht offen für weitere Antworten.

Oben