2016-09-03 2 views
1

Я работал над моим классом. Я попытался нарисовать лицо emoji, используя графику, но я набрал класс, и он говорит, что FaceComponent не найден в проекте FaceComponent. Я был смущен тем, как назвать класс и основной метод. Также, если я хочу добавить фрейм, мне придется ввести другой класс и основной метод. Как это сделать в одной программе?Не найдено основного класса? Netbeans

package facecomponent; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.geom.Ellipse2D; 
import java.awt.geom.Line2D; 
import javax.swing.JComponent; 

/** 
* 
* @author HelenPeng 
*/ 
public class FaceComponent extends JComponent { 

    public static void main(Graphics g) { 
    Graphics2D g2= (Graphics2D)g; 
    Ellipse2D.Double interestingEmoji = new Ellipse2D.Double(0,0,100,100); 
    g2.draw(interestingEmoji); 
    Ellipse2D .Double eye1 = new Ellipse2D.Double(25,25,10,10); 
    Ellipse2D .Double eye2 = new Ellipse2D.Double(50,25,10,10); 
    g2.draw(eye2); 
    g2.draw(eye1); 
    Line2D.Double mouth = new Line2D.Double(35,75,75,75) ; 
    g2.draw(mouth); 
    } 

} 

enter image description here

+0

http://i.stack.imgur.com/60dIr.png ссылка изображения –

+0

Метод 'main' должен иметь один аргумент типа' String [] ', у вас есть аргумент типа' Graphics'. –

ответ

3

В Java арг содержит переданные аргументы командной строки в виде массива объектов String.

изменение
public static void main(Graphics g)

В языке программирования Java каждое приложение должно содержать основной метод которого подпись:

public static void main(String[] args) { 
+0

, но тогда графическая переменная g не найдена –

+0

должен получить к ней доступ в противном случае, они не из основного, так как есть только аргументы, которые позже могли бы предоставить консоль, если бы это было так. –

0

Когда Java программа работает как приложение JVM будет сначала попробуйте найти главный метод, один из синтаксиса ниже, поэтому попробуйте изменить синтаксис на одну из версий belo.

public static void main(String[] args) { }//Prefered style 

public static void main(String args[]) { } 

public static void main(String... args) { }//which additionally allows callers to use varargs syntax 
+0

Итак, теперь я изменил ее. Но переменная g of Графика в строке ниже основной линии метода не найдена. –

+0

вы можете вызвать свой основной метод из фактического основного метода с помощью графического объекта ... для программы jcomponent см. Этот http://stackoverflow.com/questions/10488112/how-do-i-put-graphics-on-a-jpanel –

0

Здесь ваше определение основного метода неверно. Одно из решений - иметь основной класс и класс рисования. Измените FaceComponent класс ниже:

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.geom.Ellipse2D; 
import java.awt.geom.Line2D; 
import javax.swing.JComponent; 
import javax.swing.JPanel; 

/** 
* 
* @author HelenPeng 
*/ 
public class FaceComponent extends JPanel 
{ 

    public void paintComponent(Graphics g) 
    { 

     super.paintComponent(g); 

     Graphics2D g2= (Graphics2D)g; 
     Ellipse2D.Double interestingEmoji = new Ellipse2D.Double(0,0,100,100); 
     g2.draw(interestingEmoji); 
     Ellipse2D .Double eye1 = new Ellipse2D.Double(25,25,10,10); 
     Ellipse2D .Double eye2 = new Ellipse2D.Double(50,25,10,10); 
     g2.draw(eye2); 
     g2.draw(eye1); 
     Line2D.Double mouth = new Line2D.Double(35,75,75,75) ; 
     g2.draw(mouth); 
    } 

} 

Затем создайте новый класс FaceComponentTest и вставьте код ниже в нем.

import javax.swing.JFrame; 


public class FaceComponentTest 
{ 
    public static void main(String[] args) 
    { 
     FaceComponent faceComponent = new FaceComponent(); 

     JFrame faceComponentFrame = new JFrame("My Face"); 
     faceComponentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     faceComponentFrame.add(faceComponent); 
     faceComponentFrame.setSize(400, 400); 
     faceComponentFrame.setVisible(true); 
    } 

Это отобразит лицо. Удачи.

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