java - 编译器看不到main方法

标签 java swing inheritance

编译器看不到 main 方法,我无法运行程序,也许问题是因为我在最后一个子类中设置了 main 方法?我有父类Nasleđivanje,子类Panel1扩展了Nasleđivanje,而Panel1的子类是Panel2,它扩展了Panel1,我将main方法放在Panel中是这个问题吗?我如何纠正代码以使其工作。

package nasleđivanje;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Nasleđivanje{

protected JFrame okvir;
protected JPanel prviPanel;
protected JTextArea txtPolje;

protected void kreirajOkvir(){

    okvir=new JFrame();
    okvir.setSize(500, 400);
    okvir.setLayout(new BorderLayout());
    okvir.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    prviPanel=new JPanel();
    prviPanel.setLayout(new BorderLayout());

    txtPolje=new JTextArea();

    prviPanel.add(txtPolje,BorderLayout.CENTER);
    okvir.add(prviPanel,BorderLayout.CENTER);

   }
}

class Panel1 extends Nasleđivanje {

    protected JButton dugme1,dugme2;

    public void kreirajPanel(){

    dugme1=new JButton("Text 1");
    dugme1.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            txtPolje.setText("Kliknuli ste na prvo dugme");
        }
    });

    dugme2=new JButton("Text 2");
    dugme2.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            txtPolje.setText("Kliknuli ste na drugo dugme");
        }
    });

    prviPanel.add(dugme1,BorderLayout.WEST);
    prviPanel.add(dugme2, BorderLayout.WEST);
           }
 }

   class Panel2 extends Panel1{

protected JButton dugme3,dugme4;


       public void kreirajPanel(){

    dugme3=new JButton("Promeni boju");
    dugme3.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            prviPanel.setBackground(Color.BLACK);
        }
    });

    dugme4=new JButton("Izlaz");
    dugme4.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            System.exit(0);
        }
    });

    prviPanel.add(dugme3, BorderLayout.NORTH);
    prviPanel.add(dugme4,BorderLayout.NORTH);
   }

     public void pokreniGUI(){
    okvir.setVisible(true);
       }


public Panel2(){

    super.kreirajOkvir();
    this.kreirajPanel();
    super.kreirajPanel();

}

public static void main(String[] args) {

    Panel2 start=new Panel2();
    start.pokreniGUI();

  }

 }

最佳答案

1) 一个文件中有多个类。不要那样做。每个文件仅一个类(及其私有(private)类)。

因为你这样做了,所以你的主类中没有 main 方法。由于其位置,您的 main 方法是 Panel2 类的一部分。将您的主要方法放在主类中,并将您的类分离到单独的文件中。

关于java - 编译器看不到main方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37013685/

相关文章:

java - 如何更改从 XSD (JAXB) 生成 Java 的默认目录

java - 如何将排序结果保存到模型中

java - Swing/JFrame 与 AWT/Frame 在 EDT 之外的渲染

C++:C 结构的继承或类成员?

java - 我需要帮助理解 java.lang.StringIndexOutOfBoundsException

java - 分布式 "dumping"/"compressing"数据样本

java - Java中线程间嵌套数据结构的同步

java - Swing 中的本地化加速器(JMenuItem 热键)

c++ - C++中的虚继承

javascript - 原型(prototype)继承返回值