Brett vorm Kopf - Klasse aufrufen/instanz *?*

Status
Nicht offen für weitere Antworten.

java-robotik

Mitglied
Code:
class turnLeft implements ActionListener {
  public void actionPerformed(ActionEvent e) {
        dlinks test3 = new dlinks();
      }
}

class dlinks  {
  public static void main(String[] argv) throws InterruptedException{
      getGradzahl tt =new getGradzahl(); 
      IndustryRobot Robby1 = new IndustryRobot();
      Robby1.dreheLinks(tt.xL); 
      }
}

So dieser Code funktioniert nicht, was ja auch logisch ist, da ich in turnLeft nur eine Instanz erzeuge, und nicht weiter darauf eingehe.
Hat jemand eine Lösung für mein Problem? Ich hab schon mal versucht den code aus dlinks in eine Methode in turnLeft zu packen. hat aber irgendwie nicht funktioniert.

Schonmal vielen Dank für eure hilfe.
 

dotlens

Top Contributor
sind di beiden klassen in der gleichen datei? heisst diese Datei dlinks?

was heisst funktioniert nicht? Fehlermeldung?

übrigends schreibt man Klassen gross und Variablen klein....
 

java-robotik

Mitglied
Code:
//Import Befehle für die GUI
import java.awt.Component.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem; 

//Import Befehle zur Steuerung des Robots
import de.jaetzold.art.RobotInterfaceFactory;
import de.jaetzold.art.RobotInterface;
import de.jaetzold.art.ActuatorPort;
import de.jaetzold.art.Motor;
import de.jaetzold.art.BooleanSensor;
import de.jaetzold.art.SensorPort;
import de.jaetzold.art.SensorListener;
import de.jaetzold.art.SensorEvent;
import de.jaetzold.art.CountSensor;
import de.jaetzold.art.examples.FTRotationCountStateDecider;



 

/* *************************************** Erstellen des Frames ************************************** */

public class JDemo
{
   public static void main( String args[] )
   {
    JFrame frame = new JFrame();
    
    WindowListener wl = new WindowAdapter() {
      public void windowClosing( WindowEvent e)
      {
        System.exit(0);
      }
    };

    frame.addWindowListener(wl);
    
    frame.getContentPane().add(new PanelDemo() );
    frame.pack();
    frame.setSize(500,200);
    frame.setLocation(0,0);
    frame.setTitle("Roboter Steuerung ");
    frame.show();
   }
}

//Initialiesiert (übernimmt) die Werte für die Grad angaben


/* ******************************* Ereignisbehandlungs Methoden ********************** */

/* ******************************* drehe Rechts ************************************** */
class turnRight implements ActionListener {
  public void actionPerformed(ActionEvent e) {
      drechts test2 = new drechts();
     
      }  
}

class drechts  {
  public static void main(String[] argv) throws InterruptedException{
      getGradzahl t =new getGradzahl();
      IndustryRobot Robby = new IndustryRobot();
      Robby.dreheRechts(t.xR); 
      }
}

/* ******************************* drehe Links ************************************** */
class turnLeft implements ActionListener {
  public void actionPerformed(ActionEvent e) {
     
      dlinks test3 = new dlinks();
      }
}

class dlinks  {
  public static void main(String[] argv) throws InterruptedException{
      getGradzahl tt =new getGradzahl(); 
      IndustryRobot Robby1 = new IndustryRobot();
      Robby1.dreheLinks(tt.xL); 
      }
}





/* *************************************** "füllen" des Frames ************************** */
class PanelDemo extends JPanel
{ public PanelDemo()
   { // Konstruktor
    
   //BorderLayout - Manager
    setLayout(new BorderLayout(5,5));
   
   //Container

    
    
    //JButton erstellen
    JButton bdrechts = new JButton("DreheRechts");
    JButton bdlinks = new JButton("DreheLinks");
    JButton brobbo = new JButton("MoveRobotToStartPos");
    // Button beim Listener Anmelden
    bdrechts.addActionListener(new turnRight());
    bdlinks.addActionListener(new turnLeft());
    brobbo.addActionListener(new RobotMoveToStart());
    
      
    //JButton hinzufügen
    add(bdrechts, BorderLayout.EAST);
    add(brobbo, BorderLayout.WEST);
    add(bdlinks, BorderLayout.SOUTH);
            
    //Labels erstellen
    JLabel labeldr = new JLabel("Gradzahl dreheRechts (1 - 180°)");
    JLabel labeldl = new JLabel("Gradzahl dreheLinks (1 - 180°)");
    //Labels hinzufügen
    add(labeldr, BorderLayout.CENTER);
    add(labeldl, BorderLayout.CENTER);    
    
    //JTextFields erstellen
    JTextField gdr = new JTextField("Zahl eingeben");
    JTextField gdl = new JTextField("Zahl eingeben");
    //JTextFields hinzufügen
    add(gdr, BorderLayout.CENTER);
    add(gdl, BorderLayout.CENTER);
    
       
        /* ************************************* Menü *************************************** */   
    //JMenuBar erstellen
    JMenuBar menuLeiste = new JMenuBar();
    //JMenus erstellen
    JMenu menuDatei = new JMenu("Datei");
    JMenu menuExtras = new JMenu("Extras");
    JMenu menuHilfe = new JMenu("Hilfe");    
    
    //Menü Datei
    JMenuItem itemOeffnen = new JMenuItem("Datei öffnen", new ImageIcon("open.gif"));
    JMenuItem itemSpeichern = new JMenuItem("Datei speichern", new ImageIcon("save.gif"));
    JMenuItem itemBeenden = new JMenuItem("Programm beenden");
    //MenuItems zum JMenu (menuDatei) hinzufügen
    menuDatei.add(itemOeffnen);
    menuDatei.add(itemSpeichern);
    menuDatei.addSeparator();
    menuDatei.add(itemBeenden);
    // itemBeenden beim Listener anmelden
    itemBeenden.addActionListener(new closeProg());
    
    //Menü Extras
    JMenuItem itemEinstellungen = new JMenuItem("Einstellungen");
    //MenuItems zum JMenu (menuExtras) hinzufügen
    menuExtras.add(itemEinstellungen);
    menuExtras.addSeparator();
    
    //Untermenü Hilfe
    JMenuItem itemProgInfo = new JMenuItem("Programm Informationen");
    JMenuItem itemHilfe = new JMenuItem("Hilfe");
    // MenuItems zum JMenu (menuHilfe) hinzufügen
    menuHilfe.add(itemProgInfo);
    menuHilfe.add(itemHilfe);
    
    // JMenu (menuHilfe) zum JMenu menuExtras hinzufügen
    menuExtras.add(menuHilfe);
    
    //JMenus zur JMenuBar (menuLeiste) hinzufügen
    menuLeiste.add(menuDatei);
    menuLeiste.add(menuExtras);
          
   //JMenuBar (menuLeiste) zum frame hinzufügen
    add(menuLeiste, BorderLayout.NORTH);
    //setJMenuBar(menuLeiste);   // Befehl funktioniert nicht, deswegen add(menuLeiste);
   }
   
 /*  public String getTextFromGdr()    {
        return gdr.getText();
    }
    
     public String getTextFromGdl()    {
        return gdl.getText();
    }  */
}

Fehlermeldung kommt keine, aber es passiert auch nix, das ganze ist ne RoboterSteuerung. Der Code für die RoboterSteuerung steht in IndustryRobot, das funktioniert auch soweit, nur halt nicht wenn ich das in die GUI einbinde.

In getGradzahl weise ich xR/xL einfach einen Wert zu, nur als ergänzende bemerkung.

thx
 

Sky

Top Contributor
Was willst Du denn erreichen? Soll der Code aus der 'main' aufgerufen werden, oder was?

Die würde so
Code:
dlinks test3 = new dlinks(); 
test3.main(null);

oder so
Code:
class DLinks  { 
  public DLinks() { 
      getGradzahl tt =new getGradzahl(); 
      IndustryRobot Robby1 = new IndustryRobot(); 
      Robby1.dreheLinks(tt.xL); 
      } 
}
gehen.
 

dotlens

Top Contributor
wenn du eine klasse instanzierst, wird nicht die main methode der Klasse aufgerufen, sondern der Konstruktor, welcher gleich heisst wie die Klasse.
Es macht keinen Sinn 1000 Listeners zu erstellen und in diesen Sogar noch eine Klasse zu instanzieren....
Du kannst abfragen welcher Button gedrückt wurde mit 'instanceof' und mit if Bedingungen das richtige tun. du brauchst also eigentlich höchstens 3 Klassen. obwohl ich für den ActionListener keine eigene Klasse schreiben würde...
Klasse Frame mit ActionListener und eine Klasse JPanel. wenn du möchtest den ActionListener in einer eigenen Klasse, dann sinds 3.

Edit: och man, der ganze Text umsonst ;)
 

java-robotik

Mitglied
Kannst du mir mal ein kleines Code beispiel geben.

@sky80: das hab ich auch schon probiert. Aber da klappt nicht. Das
Code:
public static void main(String[] argv) throws InterruptedException{
muss da stehen, weil das in IndustryRobot so definiert wurde.

Der Roboter Code funktioniert auch, auch mit dem Instanzen erzeugen und so, das Problem ist nur, wie kann ich das machen des der den Code aus dlinks in turnright abarbeitet, aber das weiß ich nicht wie ich das genau mache.
 

dotlens

Top Contributor
ich weiss ja nicht ob du vor Java schon programmiert hast, aber ich lege dir nahe, Java richtig zu lernen, und nicht einfach drauflos zu schreiben, denn das was du geschrieben hast ist von vorne bis hinten Quark.
Du musst zuerst wissen wofür klassen sind und wie sie verwendet werden, bevor du sie gebrauchen kannst...
ich empfehle dir "java ist auch eine Insel" da lernst du alles wichtige
 

java-robotik

Mitglied
Ich hab schon noch vor das umzuschreiben, und ich weiß dass das so nicht ordentlich ist. ich wollte aber erst gucken dass ich die eine sache ans laufen kriege, dann wollte ich mich nachher ans umschrieben machen.


ADD:
1) In dem Listing oben hab ich erstmal ein paar sachen rausgeschmissen, die ich nicht unbedingt brauche, damit es ein wenig (die betonung liegt auf wenig) übersichtlicher wird.

2) Ich möchte eigentlich nur wissen, wie ich dass machen kann (Syntaxmäßig), dass in z.b. turnRight der Code von drechts abgearbeitet/ausgeführt wird.
 

java-robotik

Mitglied
Ich benutze jetzt folgenden code:
Code:
class turnRight implements ActionListener {
  public void actionPerformed(ActionEvent e) {
      drechts test2 = new drechts();
       test2.main(null);
       }  
}

class drechts  {
  public static void main(String[] argv) throws InterruptedException{
      getGradzahl t =new getGradzahl();
      IndustryRobot Robby = new IndustryRobot();
      Robby.dreheRechts(t.xR); 
      }      
}

Die Fehlermeldung lautet: unreported exception java.lang.InterruptedExecption; must be caught or declared to be thrown
 

mic_checker

Top Contributor
1) Klassennamen sollten großgeschrieben werden

Dann mach doch das was der Compiler zu dir sagt: In der main von drechts ist es möglich das eine InterruptedException auftaucht. Entweder du machst in main nen try...catch Block oder du "deklarierst" die Methode so das sie die Exception thrown kann (so wie bei dir gemacht):

Code:
public static void main(String[] argv) throws InterruptedException{

Im generellen gilt: Um den Fehler zu beheben musst du nun entweder in der Methode nen try..catch Block reinschreiben und die Exception da behandeln oder wie es der Compiler sagt die Exception thrown. Damit delegierst du den Fehler praktisch weiter.
In diesem Fall würde ich aber dazu raten in main nen try..catch Block zu machen und die Exception da zu behandeln.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius String und \n. Habe wohl gerade Brett vorm Kopf Java Basics - Anfänger-Themen 13
T generisches Brett vorm Kopf: (List<Object>) List<My Java Basics - Anfänger-Themen 7
S brett vorm kopp bei einer if-anweisung Java Basics - Anfänger-Themen 5
A Tic Tac Toe - Brett auf Sieger überprüfen Java Basics - Anfänger-Themen 3
P Galton-Brett Java Basics - Anfänger-Themen 6
D Kontrollabfrage vorm Speichern Java Basics - Anfänger-Themen 12
B Funktionen ausführen vorm Beenden des Programmes Java Basics - Anfänger-Themen 13
S Übungen Java von Kopf bis Fuß Java Basics - Anfänger-Themen 2
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
T Ratespiel-Java von Kopf bis Fuß Java Basics - Anfänger-Themen 15
M JAVA VON KOPF BIS FUß Java Basics - Anfänger-Themen 1
N Von Kopf bis Fuss TestArrays lässt sich nicht lösen Java Basics - Anfänger-Themen 5
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
P Compiler-Fehler Java Kopf bis Fuß Phrase0Matic Java Basics - Anfänger-Themen 4
D Literatur: von Kopf bis Fuß Java Basics - Anfänger-Themen 4
G "Java von Kopf bis Fuss" - mit Eclipse? Java Basics - Anfänger-Themen 4
Siciliano Java von Kopf bis Fuss / Kap.2 / Hundbeispiel Java Basics - Anfänger-Themen 4
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
M Java von kopf bis Fuß noch zeitgemäß ? Java Basics - Anfänger-Themen 18
feardorcha Java von Kopf bis Fuß "Java ist Pass-by-Value" Java Basics - Anfänger-Themen 6
T Problem bei BeatBox aus Java-Von Kopf bis Fuß Java Basics - Anfänger-Themen 3
M Java von Kopf bis Fuß Java Basics - Anfänger-Themen 73
I Java von Kopf bis Fuß: Ratespiel-Problem Java Basics - Anfänger-Themen 20
F Übung: Ratespiel aus dem Buch Java von Kopf bis Fuß Java Basics - Anfänger-Themen 14
F Übung 99 Flaschen Bier aus dem Buch Java von Kopf bis Fuß Java Basics - Anfänger-Themen 10
M Java von Kopf bis Fuß Java Basics - Anfänger-Themen 8
D JTable -> Kopf fehlt Java Basics - Anfänger-Themen 2
S QuickSort will mir nicht in den Kopf (an einer Stelle) Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben