графический метод drawxxx не работает

#java #swing

#java #качать

Вопрос:

Я новичок в графике. Я получил этот код из открытого исходного кода.Он должен отображать строку «HEeelo» в jframe, но это не так.Кто-нибудь может объяснить, почему он не работает должным образом, и принцип метода рисования?Почему он должен редактировать JFrame, поскольку это просто метод, который даже не вызывается из main?

 import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import javax.swing.JFrame;

public class view extends JFrame{

    public view(){
        this.setSize(new Dimension(250, 250));
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
    public void paint(Graphics g){
       g.drawString("heello", 10, 10);
    }
    public static void main(String []args){
        new view();
    }
}
  

Ответ №1:

Избавьтесь от этого руководства, это не способ рисовать.

Во-первых, основные проблемы заключаются в том, что вы всегда должны вызывать super.paint(…) при переопределении метода. Во-вторых, текст не будет отображаться, потому что он отображается под строкой заголовка. Вам нужно увеличить смещение y:

 super.paint(g);
g.drawString("heello", 10, 40);
  

и принцип метода рисования

Прочитайте раздел из учебника Swing по пользовательскому рисованию, чтобы узнать, как правильно это сделать. По сути, вы переопределяете paintComponent() метод JPanel, а затем добавляете панель в фрейм. Вы не должны выполнять пользовательскую рисовку непосредственно на фрейме.