java drawString()不会在屏幕上绘制任何东西

krcsximq  于 2023-08-02  发布在  Java
关注(0)|答案(2)|浏览(136)

我想用Graphics.drawString()来画一个字符串。但由于某种原因,屏幕上什么也没有显示。例如,绘制矩形可以工作,但drawString()不行。
下面是我的代码:

  1. public class Main extends JFrame {
  2. public static void main(String[] args) {
  3. new Main();
  4. }
  5. public Main() {
  6. this.setSize(350, 500);
  7. this.setVisible(true);
  8. }
  9. @Override
  10. public void paint(Graphics g) {
  11. super.paint(g);
  12. //Nothing is drawn on the screen.
  13. g.setColor(Color.RED);
  14. g.setFont(new Font("Arial", Font.BOLD, 25));
  15. g.drawString("Hello", 10, 10);
  16. }
  17. }

字符串

pw9qyyiw

pw9qyyiw1#

当使用Graphics类将任何东西绘制到Component时,您应该知道一件重要的事情:
drawRect(int x, int y, int width, int height)方法中,xy左上角,在drawString(String s, int x, int y)中,xy左下角
此外,当你在JFrame中绘制任何东西时,位置从JFrame标题的左上角开始,所以第一个可绘制的像素是点(~8,~28),这在每个操作系统中都是不同的。

6ljaweal

6ljaweal2#

不要在JFrame上绘制,因为JFrame不会将其绘制到精确的坐标,而是使用以下代码使您的主类成为JPanel的子类:

  1. public class Main extends JPanel {
  2. public static void main(String[] args) {
  3. new Main();
  4. }
  5. JFrame frame = new JFrame();
  6. public Main() {
  7. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  8. frame.add(this);
  9. frame.pack();
  10. frame.setSize(350, 500);
  11. frame.setVisible(true);
  12. }
  13. }

字符串
现在添加paint方法

  1. @Override
  2. public void paint(Graphics g) {
  3. super.paint(g);
  4. g.setColor(Color.RED);
  5. g.setFont(new Font("Arial", Font.BOLD, 25));
  6. g.drawString("Hello", 10, 10);
  7. }

展开查看全部

相关问题