Затмение не показывает вывод

Я делаю 2D-рисование на Eclipse Oxygen, в моем коде нет ошибок, но почему он не показывает никакого вывода. Я имею в виду, когда я нажимаю Run, прогресса нет.

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.awt.geom.Arc2D;
import java.awt.geom.Rectangle2D;

public class HOUSE1 extends Frame {
    public void paint(Graphics2D g) {
        Graphics2D g2d = (Graphics2D) g;

        g2d.drawString("HOME SWEET HOME",80,60);
        setBackground(Color.white);

        Arc2D arc1 = new Arc2D.Double(250,50,500,300,225,90,Arc2D.Double.PIE);
        g2d.draw(arc1);
        g2d.setColor(Color.red);
        g2d.fill(arc1);

        Rectangle2D rect = new Rectangle2D.Double(325,300,350,300);
        g2d.draw(rect);
        g2d.setColor(Color.blue);
        g2d.fill(rect);

        Rectangle2D rect1 = new Rectangle2D.Double(325,300,350,300);
        g2d.draw(rect1);
        g2d.setColor(Color.black);
        g2d.fill(rect1);            
    }

    public static void main(String[]args){
        HOUSE1 f = new HOUSE1();
        f.setTitle("HOUSE");
        f.setSize(300,100);         
    }

}

3 ответа

1-й: в вашем основном пустоте вы должны установить свой фрейм (f) видимым -> f.setVisible (true)

2-й: Также вы можете захотеть f.pack(); прямо перед тем, как вы установите его на видимость, чтобы убедиться, что ваши компоненты работают так, как ожидалось.

3-е: в java мы используем заглавную первую букву в классе, как этот "Дом", полностью заглавные слова используются для окончательных.

Вы забыли сделать свой кадр видимым.

Просто добавь:

f.setVisible(true);

Вы должны исправить объявление метода рисования следующим образом:

@override
public void paint(Graphics g) {
    // your code
}

Ваше окно пустое, потому что ваше paint метод никогда не вызывается. Ваш метод

public void paint(Graphics2D g)    // DOESN'T WORK

должен быть изменен на

public void paint(Graphics g)    // Correct

так что он перекрывает paint метод в Frame, Графическая система будет вызывать только paint(Graphics); если ваш метод называется paint не переопределяет метод paint(Graphics) в Frameодин в Frame вызывается вместо твоего.

Другие вопросы по тегам