Строка не отображается в JFrame - PullRequest
0 голосов
/ 29 сентября 2019

Я программирую небольшую игру, в которой я хочу показать StartScreen, и после нажатия на нее игра начнется. Но Строка не появляется.

Код:

int nRows = 115;
int nCols = 42;
int[][] grid;
Font smallFont;


public hitit() {
    setPreferredSize(new Dimension(1150,420));
    setBackground(Color.orange);
    setFont(new Font("SansSerif", Font.BOLD, 48));
    smallFont = getFont().deriveFont(Font.BOLD,18);
    setFocusable(true);


}

void drawStartScreen(Graphics2D g) {
    g.setColor(Color.red);
    g.setFont(smallFont);
    g.drawString("hit it",600,100);
    g.drawString("(click to start)", 250, 240);     
}

public void paintComponent(Graphics2D gg) {
    super.paintComponent(gg);
    Graphics2D g = (Graphics2D) gg;
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);


    drawStartScreen(g); 
}

public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setTitle("hit it");
        f.setResizable(true);
        f.add(new hitit(), BorderLayout.CENTER);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
}

}

Я пытался реализовать метод run, но это не изменило проблему

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Итак, я скопировал код в новый файл, и теперь он на самом деле работает, я не знаю почему, но положение двух строк не было проблемой.

package testetetetet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class hitit extends JPanel {


int nRows = 115;
int nCols = 42;
Font smallFont;

public hitit() {
    setPreferredSize(new Dimension(1150, 420));
    setBackground(Color.orange);
    setFont(new Font("SansSerif", Font.BOLD, 48));
    setFocusable(true);

    smallFont = getFont().deriveFont(Font.BOLD, 18);
}

void drawStartScreen(Graphics2D g) {
    g.setColor(Color.red);
    g.setFont(smallFont);
    g.drawString("hit it", 1150/2, 190);

    g.drawString("(click to start)", 1150/2, 240);
}

public void paintComponent(Graphics gg) {
    super.paintComponent(gg);
    Graphics2D g = (Graphics2D) gg;
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    drawStartScreen(g);

}

public static void main(String[] args) {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setTitle("hit it");
    f.setResizable(false);
    f.add(new hitit(), BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setVisible(true);


}

}
0 голосов
/ 30 сентября 2019

В этом коде так много неправильного, что я даже не знаю, с чего начать.

Думаю, для начала этот беспорядок не скомпилируется. public hitit() явно отсутствует тип возвращаемого значения, и невозможно сказать, какой компонент вы там используете и где принадлежит метод public void paintComponent(Graphics2D gg).

В целом, хотя весь подход кажется неправильным - почему выхотите рисовать текст вручную вместо использования доступного компонента, такого как javax.swing.JLabel ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...