我是狂热的程序员,但今天是我的第一个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);
}
使用上面的代码,我想在窗口上写一个句子,但它从不写。我做错了什么?
编辑:没关系 - 油漆必须是油漆。我道歉。
答案 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 JComponents
有paintComponent()
而不是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