在JFrame上使用图形对象绘制文本

时间:2012-01-10 11:10:08

标签: java swing text jframe draw

我是狂热的程序员,但今天是我的第一个Java课程。

public void Paint (Graphics g)
{
    if(g instanceof Graphics2D)
    {
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    }
    g.drawString("This is gona be awesome", 200, 200);
}

使用上面的代码,我想在窗口上写一个句子,但它从不写。我做错了什么?

编辑:没关系 - 油漆必须是油漆。我道歉。

3 个答案:

答案 0 :(得分:18)

在给定的代码中,您想要的是

 g2d.drawString("This is gona be awesome", 200, 200);
  ^

供您参考的工作示例:

package Experiments;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class MainClass{
  public static void main(String[] args) {
    JFrame jf = new JFrame("Demo");
    Container cp = jf.getContentPane();
    MyCanvas tl = new MyCanvas();
    cp.add(tl);
    jf.setSize(300, 200);
    jf.setVisible(true);
  }
}

class MyCanvas extends JComponent {

  @Override
  public void paintComponent(Graphics g) {
      if(g instanceof Graphics2D)
      {
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);

        g2.drawString("This is gona be awesome",70,20); 
       }
   }
}

答案 1 :(得分:3)

1)不可能直接画到JFrame,你可以画画:

  • 放在那里JPanel

  • 来自JFrame

  • getContentPane

2)对于Swing JComponentspaintComponent()而不是paint(),否则你的画无法正确绘制

3)另外一个选择是:

  • 画到JFrame's RootPane

  • 画到JFrame's GlassPane

4)2D Graphics教程

中的更多内容

答案 2 :(得分:0)

要使用JFrame在屏幕上绘制文本,可以使用Graphics.drawText(String text, int x, int y)方法。

第一个参数是您要显示的字符串,最后两个参数是此文本开始的坐标。

这是示例代码:

package example.com;

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JFrameGraphics extends JPanel {

    public void paint(Graphics g){
        g.drawString("Hello Text!", 10, 10);
    }

    public static void main(String[] args){

        JFrame frame= new JFrame("Hello");  
        frame.getContentPane().add(new JFrmaeGraphics());
        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);      
    }
}

请检出更多有关如何以Java显示文本和图形的信息:https://javatutorial.net/display-text-and-graphics-java-jframe