#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, а затем добавляете панель в фрейм. Вы не должны выполнять пользовательскую рисовку непосредственно на фрейме.