Графика Java не будет отображаться - PullRequest
2 голосов
/ 13 декабря 2011

Вот мой код:

package survival;
import javax.swing.*;
import java.awt.*;

public class Survival extends JFrame { 
    private static int applicationWidth = 1400;
    private static int applicationHeight = 900;  

    public Survival() {
        setTitle("Survival");
        setResizable(false);
        setSize(applicationWidth, applicationHeight);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void paint(Graphics g) {
        g.drawString("Test", 0, 0);
    }

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

Почему не отображается «Тест»?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Вам нужно вызвать метод paint () для суперкласса. (Артикул - Живопись в AWT и Swing )

 public Survival() {
        setTitle("Survival");
        setResizable(false);
        setSize(applicationWidth, applicationHeight);
        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        repaint();
    }

    public void paint(Graphics g) {
        super.paint(g);    
        g.drawString("Test", 120, 120); //change the co-odrinates
    }

Переопределить компонент краски JPanel.

 public Survival() {
        setTitle("Survival");
        setResizable(false);
        setSize(applicationWidth, applicationHeight);
        setVisible(true);
        add(new DrawPanel());
        setDefaultCloseOperation(EXIT_ON_CLOSE);
     }

   class DrawPanel extends JPanel
   {
    @Override
    protected  void paintComponent( Graphics g){
       g.drawString("Test", 220,220);
      }
   }
2 голосов
/ 13 декабря 2011

Не отменять paint. Всякий раз, когда вы настраиваете компонент, переопределите paintComponent.

Пример -

@Override
protected final void paintComponent(final Graphics g){
    super.paintComponent(g);
    final Graphics gCopy = g.create(); // Prevents clobbering
    gCopy.drawString("Test", 0, 0);
    gCopy.dispose();
}
...