Java ペイント コンポーネント

Sarwan Soomro 2024年2月15日
Java ペイント コンポーネント

まず、Java の paintComponent() メソッドがどのように機能するかについて説明します。 いつ起動し、そのサブシステムとクラスの構造は?

最後に、この方法を使用して画面にグラフィックを描画する方法を紹介します。 詳細については、読み続けてください。

Java の PaintComponent() メソッド

すべてのペイントとグラフィック コードを保管できる場所を検討してください。 デフォルトではロックされており、リクエストした場合にのみ入ることができると考えてください.

それは何を示していますか? ペイントするときは、このメソッドが開始されます。

一方、ペイントは、クラス階層の上位から開始します。 そのクラス階層を分析します: java.awt.Component.

ペイント サブシステムは、コンポーネントをレンダリングする必要があるときはいつでもこのメソッドを呼び出します。

Java paintComponent() はどのように呼び出されますか? Java AWT はコールバック メカニズムをサポートしています。

AWT コールバック メカニズムは、重量コンポーネントと軽量コンポーネントの両方で同じであることに注意してください。 これらのコンポーネントは、特定のペイント リクエストがどのように呼び出され、トリガーされるかに関係なく、ペイントに使用されます。

プログラムは、特定のオーバーライドされたメソッド内にレンダリング コードを配置する必要があります。 そして、同じツールキットが、ペイントするときにこのメソッドを呼び出します。

ノート
オーバーライドする必要があるメソッドは java.awt.Component です。

構文:

import java.awt.*;
import javax.swing.*;
public void paintComponent(Graphics g) {
  // your code goes here
}

さらに、javax.swing.JComponent は、paint メソッドを 3つの異なるメソッドに分割することにより、このクラスを拡張します。

  1. protected void paintComponent(Graphics g)
  2. protected void paintBorder(Graphics g)
  3. protected void paintChildren(Graphics g)

ここまでで、この方法の基本を理解していただけたと思います。 さて、paintComponent() で通常使用する別の方法について説明しましょう。

また、今は前述のシステムに引き渡す場合でもありません。 それでも、repaint() メソッドを使用してシステムに表示を一新するように依頼することができます。

ノート
repaint() の呼び出しは、paintComponent() の呼び出しにつながります。

ペイント を使用するためのベスト プラクティス:

  1. レンダリング コードをどこにも配置しないでください。 ペイント コールバックの範囲外で呼び出される可能性があります。 このようなコードは、ペイントが不適切な場合に呼び出される可能性があります。
  2. コンポーネントが表示される前、または有効な Graphics オブジェクトにアクセスする前に、プログラムが paint() を直接呼び出すことはお勧めしません。

ペイント操作は、AWT によって非同期に要求されます。 次のコード ブロックを確認して、アイデアを得てください。

コード:

public void repaint() public void repaint(long xyz) public void repaint(int a, int b,
    int definewidth,
    int defineheight) public void repaint(long xyz, int a, int b, int definewidth, int defineheight)

完全な Java デモの例を次に示します。

コード:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
// main class
@SuppressWarnings("serial")
class PainComponentDemo extends JPanel {
  public PainComponentDemo() {
    // setting background
    setBackground(Color.CYAN);
  }

  @Override
  // override java paintComponent
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawOval(0, 0, getWidth(), getHeight());
  }
  // driver function
  public static void main(String[] args) {
    // extend jfram
    JFrame custJF = new JFrame();
    custJF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    custJF.setSize(500, 499);
    custJF.add(new PainComponentDemo());
    custJF.setVisible(true);
  } // driver function ends
} // main class ends

出力:

Java ペイント コンポーネント

著者: Sarwan Soomro
Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn

関連記事 - Java Swing