Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译器don';我看不出主要的方法_Java_Swing_Inheritance - Fatal编程技术网

Java 编译器don';我看不出主要的方法

Java 编译器don';我看不出主要的方法,java,swing,inheritance,Java,Swing,Inheritance,编译器看不到main方法,我无法运行程序,可能是因为我在最后一个子类中设置了main方法?我有父类Nasleđivanje,子类Panel1,它扩展了Nasleđivanje,子类Panel1,它的Panel2,它扩展了Panel1,我把主要方法放在Panel中,这个问题是吗?如何更正代码以使其正常工作 package nasleđivanje; import javax.swing.*; import java.awt.*; import java.awt.event.*; public c

编译器看不到main方法,我无法运行程序,可能是因为我在最后一个子类中设置了main方法?我有父类Nasleđivanje,子类Panel1,它扩展了Nasleđivanje,子类Panel1,它的Panel2,它扩展了Panel1,我把主要方法放在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) 在一个文件中有多个类。不要那样做。每个文件仅包含一个类(及其私有类)


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

通常,IDE会通过将
public
类的名称传递给
java
解释器来配置运行应用程序。假设这样,是的,在
public
Nasleđivanje
中没有
main
方法。作为一个简单的解决方案,您可以将
main
移动到那里

或者,您可以将IDE配置为运行
Panel2
,而不是
Nasleđivanje
。Java将允许您运行适当的
main
方法,即使封闭类不是
public

编译器看不到main方法,我无法运行程序

Main方法充当程序的入口点,Java中的每个类都允许有自己的
Main()
method。因此,如果项目中有多个类,并且在运行项目时,它将从为项目设置的主类的
main()
方法运行

如果您正在运行您的项目

1) 确保在主类或


2) 更改项目中的主类并确保该类包含主方法。

(除非您使用的是内部类,这是另一个主题;)@MadProgrammer,这就是我所说的“私有类”。。。同样的想法。内部类可以是私有的;),但我只是太挑剔了;)是的,你是。当然,“内部类”是正确的术语。私人课堂是我忘记了“内部课堂”这个词,LOL如何改变我的主要课堂project@GlacialMan如果您使用的是IDE而不是记事本,请在类或项目的选项中进行探索,您可以在那里对其进行更改。很难指导您,因为我不知道您使用的是什么IDE。