2016-06-16 4 views
-5

Я пытаюсь создать фрейм & Панель в Java с использованием компонентов swing, но получаю ошибку в myframe(), которая говорит «недопустимое объявление, требуемый тип возврата». Когда мой учитель запускал его в классе, он был успешно запущен, но теперь он дал ошибку.Ошибка при создании JFrame

import javax.swing.*; 

class myFrame extends JFrame { 

    private mypanel p1; 

    myframe() /*here I'm getting error that "invalid decleration, return type required */ { 
     this.setSize(400, 500); 
     this.setTitle("My First GUI"); 
     setDeafultCloseOpeartion(JFrame.EXIT_ON_CLOSE); 
     this.add(p1); 
     setVisible(true); 
    } 
} 

class mypanel extends Jpanel { 

    private JButton b1; 

    mypanel() { 
     b1 = new JButton("Click me"); 
     this.add(b1); 
    } 
} 

class mygui { 

    public static void main(String args[]) { 
     myframe f = new myframe(); 
     myframe f1 = new myframe(); 
    } 
} 
+3

myframe не то же самое, как myFrame –

+1

... и имя класса должно начинаться с верхним регистром символом. То есть это должен быть «MyFrame». – camickr

+1

extends Jpanel должен быть JPanel – Ingram

ответ

3

Вы должны изменить свое имя конструктора для myFrame

class myFrame extends JFrame { 

    //The name of the constructor should be the same as the class name 
    myFrame() { 
     //... 
    } 
} 

А вы бы лучше начать свое имя класса с верхним характером дела, как это:

class MyFrame extends JFrame { 

    MyFrame() { 
     //... 
    } 
} 
+0

Я изменил имя конструктора, теперь его sam как имя класса. Его компиляция, но дающая ошибку времени выполнения. Исключение из потока «main» java.lang.NullPointerExceptio в java.awt.Container.addImpl (Неизвестный источник) at java.awt.Container.add (Неизвестный источник) at javax.swing.JFrame.addImpl (Неизвестный источник) at java.awt.Container.add (Неизвестный источник) на myFrame. (MyGui.java:10) at MyGui.main (MyGui.java:27) –

+0

Вы должны изменить «private MyPanel p1;» на «private MyPanel p1 = new MyPanel();» Поскольку вам нужно создать экземпляр MyPanel по ключевому слову new. – DNX

3

Вы должны создать объект от вашей панели от mypanel и добавьте этот объект в ваш JFrame вместо этого private mypanel p1;

import javax.swing.*; 

class myFrame extends JFrame { 

    // private mypanel p1; 

    myFrame() /*here I'm getting error that "invalid decleration, return type required */ { 
     this.setSize(400, 500); 
     this.setTitle("My First GUI"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     mypanel p=new mypanel(); 
     this.add(p); 
     setVisible(true); 
    } 
} 

class mypanel extends JPanel { 

    private JButton b1; 

    mypanel() { 
     b1 = new JButton("Click me"); 
     this.add(b1); 
    } 
} 

class mygui { 

    public static void main(String args[]) { 
     myFrame f = new myFrame(); 
     myFrame f1 = new myFrame(); 
    } 
} 
2

MyFrame() -> имя конструктора неверен

Смежные вопросы