绘制字符串在JFrame上不可见

时间:2017-10-03 01:30:40

标签: java swing

因此,对于我的作业,我需要使用此public void draw(Graphics2D g)方法创建一个三角形对象,以在画布上呈现三角形。

我测试了它是否可以在我开始深入到代码之前将简单文本打印到屏幕上。我习惯使用public void paintComponent(Graphics g)方法,它在我使用该方法时有效。但是当我使用public void draw(Graphics2D g)方法时它是空白的。

我做错了什么?

import javax.swing.JFrame;

public class Main {
    public static void main(String[] args){
      Window window = new Window();
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      window.setSize(700,500);
      window.setLocation(400,100);
      window.setTitle("Draw Pad");
      window.initialize();
      window.setVisible(true);
     }
}

import java.awt.Container;
import javax.swing.JFrame;
public class Window extends JFrame {
    public void initialize(){
    DrawPanel panel = new DrawPanel();
    Container contentPane = getContentPane(); 
    contentPane.add("Center", panel);
    }
}

import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class DrawPanel extends JPanel {
    //Doesn't work using this
    public void draw(Graphics2D g)
    {
       g.drawString(("Hello"), 100, 100);
    } 
    //Works using this
    @Override
    public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    g2.drawString(("Hello"),100,100); 
  }
}

2 个答案:

答案 0 :(得分:1)

逐步解决不编译的代码示例问题;你需要先看看

更好地了解绘画的实际运作方式以及如何使用它

我建议您查看Working with Text APIs,以便更好地了解使用Graphics2D

呈现文字的方式

答案 1 :(得分:0)

为什么你期望公开无效draw(Graphics2D g)做什么?我根本没有看到它被调用。
无论如何Swing paint调用paint()调用{{1}你应该覆盖它以添加你想要的功能。

相关问题