2016-04-28 10 views
-2

Ich habe ein Problem mit meiner GuiTest-Klasse. Hier ist der Fehler: "Fehler: Hauptmethode nicht in Klasse GUITest gefunden, bitte definieren Sie die Hauptmethode als: public static void main (String [] args) oder eine JavaFX-Anwendungsklasse muss javafx.application.Application erweitern". Wie kann ich dieses Problem beheben?Probleme mit einem Fehler haben Fehler: Hauptmethode nicht in Klasse gefunden GUITest

import java.awt.BorderLayout; 
    import java.awt.Color; 
    import java.awt.FlowLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JPanel; 
    //Here i modified this class to add button and implement its action  listener. 
    public class GUITest { 

static class buttonlistener implements ActionListener 
{ 
JFrame l1 ; 
buttonlistener(JFrame l1) 
{ 
this.l1 = l1; 


public static void main(String[] args){ 
    final JFrame f=new JFrame(); 
    f.setLayout(new BorderLayout()); 
    f.add(new PatternPanel()); 
    f.setSize(500,500); 
    f.setVisible(true); 
    f.setBackground(Color.CYAN); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
    JButton b1 = new JButton("change color"); 
    b1.addActionListener(new ActionListener(){ 

     public void actionPerformed(ActionEvent ae) 
     { 
      f.setLayout(new BorderLayout()); 
      f.add(new CircleTile()); 
      f.setSize(500,500); 
      f.setVisible(true); 
      f.setBackground(Color.CYAN); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      repaint(); 
     } 
     }); 
      ; 
      buttonPanel.add(b1); 
      f.add(buttonPanel,BorderLayout.SOUTH); 


    } 

} 

protected void repaint() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 

     } 
    } 
    } 




    import java.awt.Graphics; 
`` import java.awt.Color; 
    import javax.swing.*; 
    import java.awt.Graphics2D; 

    public class PatternPanel extends JPanel { 
    int i,j,x,y; 
    @Override 
    public void paint(Graphics g){ 
    Graphics2D g1=(Graphics2D)g;   
    g1.setColor(Color.GREEN);  
    g1.fillRect(0,0,100,100); 
    g1.drawRect(0,0,100,100); 
    g1.setColor(Color.BLACK); 
    g1.drawOval(0,0,100,100); 
    g1.setColor(Color.YELLOW); 
    g1.fillOval(0,0,100,100); 
    g1.setColor(Color.BLACK); 
    g1.drawOval(10,10,80,80); 
    g1.drawOval(20,20,60,60);  
    g1.drawOval(30,30,40,40);  
    g1.drawOval(40,40,20,20); 
    g1.drawLine(50,0,50,100); 
    g1.drawLine(0,50,100,50); 
    for(i=0;i<3;i++){   
     x=0 + 50*i; 
     g1.drawLine(x,0,x,0+100);   
    } 
    for(i=0;i<3;i++){   
     y=0 + 50*i; 
     g1.drawLine(0,y,0+100,y);   
    } 

    //2nd Block 
    g1.setColor(Color.GREEN);  
    g1.fillRect(10,120,120,120); 
    g1.drawRect(10,120,120,120);     
    for(i=0;i<5;i++){ 
     y=120 + 24*i; 
     for(j=0;j<5;j++){ 
      x=10 + 24*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,24,24); 
      g1.setColor(Color.YELLOW); 
      g1.fillOval(x,y,24,24); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 3,y + 3,18,18); 
      g1.drawOval(x + 6,y + 6,12,12); 
      g1.drawOval(x + 9,y + 9,6,6);    
     }       
    } 
    for(i=0;i<11;i++){   
     x=10 + 12*i; 
     g1.drawLine(x,120,x,120+120);   
    } 
    for(i=0;i<11;i++){   
     y=120 + 12*i; 
     g1.drawLine(10,y,10+120,y);   
    }  

    //3rd Block 
    g1.setColor(Color.GREEN);  
    g1.fillRect(150,20,240,240); 
    g1.drawRect(150,20,240,240);     
    for(i=0;i<6;i++){ 
     y=20 + 40*i; 
     for(j=0;j<6;j++){ 
      x=150 + 40*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,40,40); 
      g1.setColor(Color.YELLOW); 
      g1.fillOval(x,y,40,40); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 4,y + 4,32,32); 
      g1.drawOval(x + 8,y + 8,24,24); 
      g1.drawOval(x + 12,y + 12,16,16); 
      g1.drawOval(x + 16,y + 16,8,8);    
     }    
    } 
    for(i=0;i<13;i++){   
     x=150 + 20*i; 
     g1.drawLine(x,20,x,20+240);   
    } 
    for(i=0;i<13;i++){   
     y=20 + 20*i; 
     g1.drawLine(150,y,150+240,y);   
    } 

    //4th Block 
    g1.setColor(Color.GREEN);  
    g1.fillRect(130,275,108,108); 
    g1.drawRect(130,275,108,108);    
    for(i=0;i<3;i++){ 
     y=275 + 36*i; 
     for(j=0;j<3;j++){ 
      x=130 + 36*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,36,36); 
      g1.setColor(Color.YELLOW); 
      g1.fillOval(x,y,36,36); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 6,y + 6,24,24); 
      g1.drawOval(x + 12,y + 12,12,12);        
     }    
    } 
    for(i=0;i<7;i++){   
     x=130 + 18*i; 
     g1.drawLine(x,275,x,275+108);   
    } 
    for(i=0;i<7;i++){   
     y=275 + 18*i; 
     g1.drawLine(130,y,130+108,y);   
    }  
} 

}

   import java.awt.Graphics; 
import java.awt.Color; 

import javax.swing.*; 

import java.awt.Graphics2D; 
public class CircleTile extends JPanel { 
int i,j,x,y; 
@Override 
public void paint(Graphics g){ 
    Graphics2D g1=(Graphics2D)g;   
    g1.setColor(Color.GREEN);  
    g1.fillRect(0,0,100,100); 
    g1.drawRect(0,0,100,100); 
    g1.setColor(Color.BLACK); 
    g1.drawOval(0,0,100,100); 
    g1.setColor(Color.YELLOW); 
    g1.fillOval(0,0,100,100); 
    g1.setColor(Color.BLACK); 
    g1.drawOval(10,10,80,80); 
    g1.drawOval(20,20,60,60);  
    g1.drawOval(30,30,40,40);  
    g1.drawOval(40,40,20,20); 
    g1.drawLine(50,0,50,100); 
    g1.drawLine(0,50,100,50); 
    for(i=0;i<3;i++){   
     x=0 + 50*i; 
     g1.drawLine(x,0,x,0+100);   
    } 
    for(i=0;i<3;i++){   
     y=0 + 50*i; 
     g1.drawLine(0,y,0+100,y);   
    } 

    //2nd Block 
    g1.setColor(Color.GRAY);   
    g1.fillRect(10,120,120,120); 
    g1.drawRect(10,120,120,120);     
    for(i=0;i<5;i++){ 
     y=120 + 24*i; 
     for(j=0;j<5;j++){ 
      x=10 + 24*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,24,24); 
      g1.setColor(Color.YELLOW); 
      g1.fillOval(x,y,24,24); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 3,y + 3,18,18); 
      g1.drawOval(x + 6,y + 6,12,12); 
      g1.drawOval(x + 9,y + 9,6,6);    
     }       
    } 
    for(i=0;i<11;i++){   
     x=10 + 12*i; 
     g1.drawLine(x,120,x,120+120);   
    } 
    for(i=0;i<11;i++){   
     y=120 + 12*i; 
     g1.drawLine(10,y,10+120,y);   
    }  

    //3rd Block 
    g1.setColor(Color.BLUE);   
    g1.fillRect(150,20,240,240); 
    g1.drawRect(150,20,240,240);     
    for(i=0;i<6;i++){ 
     y=20 + 40*i; 
     for(j=0;j<6;j++){ 
      x=150 + 40*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,40,40); 
      g1.setColor(Color.RED); 
      g1.fillOval(x,y,40,40); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 4,y + 4,32,32); 
      g1.drawOval(x + 8,y + 8,24,24); 
      g1.drawOval(x + 12,y + 12,16,16); 
      g1.drawOval(x + 16,y + 16,8,8);    
     }    
    } 
    for(i=0;i<13;i++){   
     x=150 + 20*i; 
     g1.drawLine(x,20,x,20+240);   
    } 
    for(i=0;i<13;i++){   
     y=20 + 20*i; 
     g1.drawLine(150,y,150+240,y);   
    } 

    //4th Block 
    g1.setColor(Color.GRAY);   
    g1.fillRect(130,275,108,108); 
    g1.drawRect(130,275,108,108);    
    for(i=0;i<3;i++){ 
     y=275 + 36*i; 
     for(j=0;j<3;j++){ 
      x=130 + 36*j; 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x,y,36,36); 
      g1.setColor(Color.PINK); 
      g1.fillOval(x,y,36,36); 
      g1.setColor(Color.BLACK); 
      g1.drawOval(x + 6,y + 6,24,24); 
      g1.drawOval(x + 12,y + 12,12,12);        
     }    
    } 
    for(i=0;i<7;i++){   
     x=130 + 18*i; 
     g1.drawLine(x,275,x,275+108);   
    } 
    for(i=0;i<7;i++){   
     y=275 + 18*i; 
     g1.drawLine(130,y,130+108,y);   
    } 
} 
} 
+0

Ive fand das Problem dank für die Hilfe –

Antwort

3

Ihre Hauptmethode innerhalb einer inneren Klasse Konstruktor begraben ist - warum? Alles, was Sie tun müssen, ist zu beheben, was der Fehler Ihnen zu beheben sagt: Setzen Sie es in die äußere Hauptklasse, die GUITest-Klasse.

Niemals die Compiler-Fehlermeldung ignorieren, und in der Tat ist der Schlüssel zum Lösen dieser und der meisten Compiler-Fehler zu versuchen, die Fehlermeldung kritisch zu lesen und dann beheben, was es Ihnen sagt, zu beheben. Tun Sie das und Sie werden 90% dieser Arten von Fehlern beheben.

Ein anderes Problem mit Ihrem Code: Ihre Einrückung ist überall, ist wild variierend, und deshalb sehen Sie nicht, was Sie falsch machen. Wenn Sie korrekt und regelmäßig eingerückt sind, sehen Sie schnell, wie Ihre Hauptmethode tief in die falsche Klasse eingebettet ist. Verstehen Sie, dass Einrückungs- und Formatierungsregeln nicht dafür sorgen, dass der Code hübsch aussieht (obwohl dies hilfreich ist), sondern dass er Ihnen hilft, Ihren Code auf einen Blick besser zu verstehen und zu debuggen.

Zum Beispiel, wenn Sie den Code entsprechend formatiert wurden, können Sie die Hauptmethode offensichtlich tief in gegliederten Code begraben finden würde:

public class GUITest { 

    static class buttonlistener implements ActionListener { 
     JFrame l1 ; 
     buttonlistener(JFrame l1) { 
      this.l1 = l1; 

      // ***** here is your main method, where it does not belong 
      public static void main(String[] args){ 
       final JFrame f=new JFrame(); 
       f.setLayout(new BorderLayout()); 
       f.add(new PatternPanel()); 
       f.setSize(500,500); 
       f.setVisible(true); 
       f.setBackground(Color.CYAN); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       JPanel buttonPanel = new JPanel(); 
       buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
       JButton b1 = new JButton("change color"); 
       b1.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent ae) { 
         f.setLayout(new BorderLayout()); 
         f.add(new CircleTile()); 
         f.setSize(500,500); 
         f.setVisible(true); 
         f.setBackground(Color.CYAN); 
         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         repaint(); 
        } 
       }); 
       buttonPanel.add(b1); 
       f.add(buttonPanel,BorderLayout.SOUTH); 
      } 
     } 

     protected void repaint() { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
     } 
    } 
} 

So ist es fix:

public class GUITest { 

    // ***** So move it to where it now does belong 
    public static void main(String[] args){ 
     final JFrame f=new JFrame(); 
     f.setLayout(new BorderLayout()); 
     f.add(new PatternPanel()); 
     f.setSize(500,500); 
     f.setVisible(true); 
     f.setBackground(Color.CYAN); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel buttonPanel = new JPanel(); 
     buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
     JButton b1 = new JButton("change color"); 
     b1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       f.setLayout(new BorderLayout()); 
       f.add(new CircleTile()); 
       f.setSize(500,500); 
       f.setVisible(true); 
       f.setBackground(Color.CYAN); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       repaint(); 
      } 
     }); 
     ; 
     buttonPanel.add(b1); 
     f.add(buttonPanel,BorderLayout.SOUTH); 
    }  

    static class buttonlistener implements ActionListener { 
     JFrame l1 ; 
     buttonlistener(JFrame l1) { 
      this.l1 = l1; 
     } 

     protected void repaint() { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
     } 
    } 
}