web-dev-qa-db-ja.com

JFrameでグラフィックオブジェクトを使用してテキストを描画します

私は熱心なプログラマーですが、今日が私の最初の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);
}

上記のコードで、ウィンドウに文章を書きたいのですが、書きません。私は何が間違っているのですか?

編集:気にしないでください-ペイントはペイントでなければなりません。大変お詫び申し上げます。

9
Aiden Strydom

与えられたコードで、あなたが欲しいのは

 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); 
       }
   }
}
19
COD3BOY

1)JFrameに直接ペイントすることはできません。ペイントできます:

  • そこに置くJPanel

  • JFrameからのgetContentPane

2)Swingの場合JComponentspaintComponent()の代わりにPaint()があります。そうしないと、絵を正しく描くことができませんでした。

3)別のオプションは次のとおりです。

  • JFrame's RootPaneにペイントします

  • JFrame's GlassPaneにペイントします

4)詳細 2Dグラフィックス チュートリアル

3
mKorbel

JFrameを使用して画面にテキストを描画するには、Graphics.drawText(String text, int x, int y)メソッドを使用できます。

最初のパラメータは表示する文字列で、最後の2つのパラメータはこのテキストが始まる座標です。

サンプルコードは次のとおりです。

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

0
Johnny