Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » class wird nicht ausgeführt.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.02.2005, 15:54 Uhr
Sloth



HI. Ich versuch mich jetzt seit n 2,3Wochen mal mit ner kleinen Anwendung. Wenns fertig is soll es irgendwann mal Hangman werden

Mein Problem, was ich momantan habe ist, dass ich an einer stelle eine class aufrufe, die zeile davor und dahinter ausgeführt wird, aber nicht die class....

erstmal der Code:


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

class game extends Frame
{        
    TextField eingabefeld            = new TextField();
    Button  gameOk                    = new Button("Ok");
    Button  gameAdvise                = new Button("Wort erraten");
    Button  gameClose                = new Button("Schließen");
    Label   gamehangman                = new Label("Hangman 3.0");
    Frame   lengthErrorFrame        = new Frame("Fehler");
    Button  lengthErrorFrameClose    = new Button("Schließen");
    Label   lengthErrorFrameLabel    = new Label("Min./Max. einen");
    Label   lengthErrorFrameLabel2    = new Label("Buchstaben eingeben");
    Frame   WinRandomWord            = new Frame("WIN!!!");
    Button  WinRandomWordClose        = new Button("Schließen");    
    String hilfString="*";
    String StarString = new String("*");
    String RandomWord = "";
    String OwnWord = "";
    String TextfieldWord= "";
    int[] starsIntArray = new int[100];
    Label StarLabel = new Label(StarString);

    //###############################################################################
    class Podium extends Canvas
    { public void paint(Graphics g){
            g.drawString("bla",10,10);
            System.out.println("in Podium");
        }
    }
    //''#############################################################################

    //###############################################################################
    class StarWord extends Canvas{
        public void paint(Graphics g){
            g.drawString("xx",100,100);
            System.out.println("StarWord");
        }
    }
    //###############################################################################
    
    
    
    private class ActionLengthErrorFrameClose implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
            lengthErrorFrame.setVisible(false);
            eingabefeld.setText("");
        }                
    }
    //###############################################################################
    
    private class ActionWinRandomWordClose implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
            eingabefeld.setText("");
            System.exit(0);
        }                
    }
    //###############################################################################
    public void richtig(int GameArt)
    {
        setVisible(false);
        switch(GameArt)
        {
        
            case 1:
            {
                break;
            }    
            
            case 2:
            {
                Label   WinRandomWordLabel     = new Label("Richtig!!! Das Wort war: \"" + RandomWord+"\"");
                WinRandomWord.setSize(300,300);
                WinRandomWord.setLayout(null);
                Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
                  WinRandomWord.setBackground(Color.blue);
                  WinRandomWord.setLocation((d.width - WinRandomWord.getSize().width) / 2, (d.height - WinRandomWord.getSize().height) / 2);
                WinRandomWordClose.setSize(80,20);
                WinRandomWordClose.setLocation(105,265);
                WinRandomWord.add(WinRandomWordClose);
                WinRandomWordLabel.setSize(290,30);
                WinRandomWordLabel.setLocation(5,50);
                WinRandomWord.add(WinRandomWordLabel);
                WinRandomWord.setFont(new Font("Courier",Font.BOLD,15));
                WinRandomWord.setVisible(true);
                WinRandomWordClose.addActionListener(new ActionWinRandomWordClose());

                System.out.println("vor Podium");
                WinRandomWord.add("Center",new Podium());
                System.out.println("nach Podium");
                break;    
            }
        }
    
    }
    //###############################################################################    
    public void loese()
    {
        if(RandomWord.equals(eingabefeld.getText()))
        richtig(2);
    }
    //###############################################################################    
    private class ActionGameAdvise implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
        loese();
        }                
    }
    //###############################################################################
    public void raten(int GameArt)
    {
        String Buchstabe = eingabefeld.getText();
        boolean contain = false;
        switch(GameArt)
        {
            case 1:
            {
                break;
            }    
            
            case 2:
            {
                String eingabefeldtext=eingabefeld.getText();
                
                for(int n =0; n <RandomWord.length();n++)
                    if(RandomWord.charAt(n) == eingabefeldtext.charAt(0))
                    {
                        contain=true;
                        System.out.println("Buchstabe "+ eingabefeldtext.charAt(0) +" ist im Wort enthalten");        
                    }
                break;        
            }
        }
    }

    //###############################################################################
    public void wortlaenge()
    {    
        int laenge= eingabefeld.getText().length();
        if(laenge!=1)
        {        lengthErrorFrame.setFont(new Font("Courier",Font.BOLD,15));
                 lengthErrorFrame.setLayout(null);
                 lengthErrorFrame.setSize(200,200);
                 lengthErrorFrame.setBackground(Color.red);
                 lengthErrorFrameClose.setSize(80,20);
                 lengthErrorFrameClose.setLocation(60,175);
                 lengthErrorFrame.add(lengthErrorFrameClose);    
                 lengthErrorFrameClose.addActionListener(new ActionLengthErrorFrameClose());
                 lengthErrorFrameLabel.setSize(190,15);
                 lengthErrorFrameLabel.setLocation(10,65);
                 lengthErrorFrame.add(lengthErrorFrameLabel);
                
                 lengthErrorFrameLabel2.setSize(190,20);
                 lengthErrorFrameLabel2.setLocation(10,80);
                 lengthErrorFrame.add(lengthErrorFrameLabel2);
                 lengthErrorFrame.setVisible(true);
                
                Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
                  lengthErrorFrame.setLocation((d.width - lengthErrorFrame.getSize().width) / 2, (d.height - lengthErrorFrame.getSize().height) / 2);
                this.addWindowListener
                   (
                    new WindowAdapter()
                    {
                        public void windowClosing(WindowEvent e)
                        {
                            lengthErrorFrame.setVisible(false);
                          }
                    }
                );
        }
    }
    //###############################################################################
    private class ActionGameClose implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
        System.exit(0);
        }                
    }
    //###############################################################################    
    private class ActionGameOk implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
             wortlaenge();
             int fehler = 0;
             System.out.println(eingabefeld.getText());    
             raten(2);
             System.out.println("Vor StarWord");
             add(new StarWord());
             System.out.println("Hinter StarWord");
             setVisible(false);    
             setVisible(true);    
        }                
    }
    //###############################################################################
    public game(String Randomwordin)
    {
        RandomWord = Randomwordin;
        setSize(500,500);
        setLocation(180,80);
        setTitle("Hangman 3.0");
        setBackground(Color.blue);
        setForeground(Color.white);
        starsIntArray[RandomWord.length()] = 2;
        
        for(int z =0;z<RandomWord.length()-1;z++)
            StarString += "*";
        
        StarLabel.setText(StarString);
        StarLabel.setSize(90,100);
        StarLabel.setLocation(60,60);
        add(StarLabel);
        
        System.out.println(" "+StarString);
            
        gameClose.addActionListener(new ActionGameClose());
        gameOk.addActionListener(new ActionGameOk());    
        gameAdvise.addActionListener(new ActionGameAdvise());
        
        char[] buchstaben = new char[RandomWord.length()];
        for(int a =0;a<RandomWord.length();a++)
            buchstaben[a] ='*';    
                
        setLayout(null);
        setForeground(Color.black);
        setFont(new Font("Courier",Font.BOLD,25));
        eingabefeld.setBackground(Color.blue);
        
        eingabefeld.setSize(490,40);
        gameOk.setSize(490,40);
        gameAdvise.setSize(490,40);
        gameClose.setSize(490,40);
        gamehangman.setSize(190,40);
        
        eingabefeld.setLocation(5,325);
        gameOk.setLocation(5,375);
        gameAdvise.setLocation(5,415);
        gameClose.setLocation(5,455);
        gamehangman.setLocation(150,20);
        
        add(gameOk);
        add(gameAdvise);
        add(gameClose);
        add(eingabefeld);
        add(gamehangman);
        
        setVisible(true);    
    }
}



In der Methode richtig ende case 2 rufe ich ja podium auf. Die ausgabe
vor podium
erscheint noch
dann kommt aber direkt
nach podium

und nicht in podium. Ich weiß nicht wo der fehler ist, an einer anderen stelle, in einer anderen datei funktioniert das alles fehlerfrei

Diese Datei "game.java" wird nach ein paar eingaben gestartet. Ich kann alles fehlerfrei Compillieren, aber wie gesagt, die Klasse wird winfach nicht ausgeführt. Ich hab schon mal alle Dateien gelöscht und in einem anderem Pfad neu angelegt, aber das ganze bleibt so.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2005, 16:37 Uhr
KaraHead



Ich weiss nicht ob ich richtig liege, aber Podium hat bei dir keinen Konstruktor und somit wird auch der Canvas Konstruktor nicht aufgerufen, deshalb klappt das überschreiben von paint nicht.

Ich würd's so schreiben:

C++:
class Podium extends Canvas
    {
        public Podium(){
          super(); //führt den Canvas Konstruktor aus
        }

        public void paint(Graphics g){
            super.paint(g);  //solltest du aufrufen, damit du nicht die  
//ganze Canvas-paint Methode nachimplementieren musst                      
            g.drawString("bla",10,10);
            System.out.println("in Podium");
        }
    }



- KaraHead

Dieser Post wurde am 27.02.2005 um 16:40 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2005, 19:20 Uhr
Sloth



Erstmal danke für die schnelle Antwort, aber leider war es das nicht, also ich mein wenn ich ihm sage:


C++:
class Podium extends Canvas
    {
        public Podium(){
          super(); //führt den Canvas Konstruktor aus
          System.out.println("Bla bla")
  }
        public void paint(Graphics g){
            super.paint(g);  //solltest du aufrufen, damit du nicht die  
            //ganze Canvas-paint Methode nachimplementieren musst                      
            g.drawString("bla",10,10);
            System.out.println("in Podium");
        }
    }



Erscheint auch wieder keine ausgabe in der Konsole. Also er für das gesammte nicht aus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.02.2005, 16:55 Uhr
Th



Also die Funktion Paint von Podium ruft er natürlich erst auf, wenn er den Canvas darstellt.
Mit "new Podium()" wird ja nur der Konstruktor aufgerufen, nicht die Paint-Methode.

Ist die Funktion "WinRandomWord.add("Center",new Podium());" von den Parametern her richtig, da du vorher ja einfach "WinRandomWord.add(WinRandomWordLabel);" aufrufst.
Evtl. solltest du "WinRandomWord.setVisible(true);" zuletzt aufrufen, also nach allen "add"-Methoden.

Siehst du denn überhaupt die beiden Buttons?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.02.2005, 16:56 Uhr
(un)wissender
Niveauwart


super.paint muss nicht aufgerufen werden...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.03.2005, 08:36 Uhr
Sloth



Ja, die Buttons sind da. Das Label erscheint auch richtig. Aber müßte nicht in jedem Fall schon einmal das System.out.println("Bla bla"); ausgeführt werden, auch wenn die Paint Methoden nicht ausgeführt wird?
Ich teste heute Nachmittag noch was. Das "Center" ist eigentlich auch überflüssig, bei den drawstring und drawlines stehen ja eh die genauen Positionen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: