Javaで再描画する

PHPz
PHPzオリジナル
2024-08-30 15:38:22313ブラウズ

Java の repaint メソッドは java.applet.Applet クラスで利用できます。これは、paint メソッドの呼び出しとともに update メソッドを呼び出す必要がある場合に常に使用される最終メソッドです。 update メソッドを呼び出すと、現在のウィンドウがクリアされ、更新が実行され、その後、paint メソッドが呼び出されます。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

構文:

package <packagename>;
// class extending applet
public class <classname> extends Applet{
public method <methodName>(<arguments>){
repaint();             // calling repaint method when required
}
}

上記の構文は、Java で repaint メソッドがどのように使用されるかを示しています。 repaint メソッドは java.applet.Applet クラスの一部であり、オーバーライドできません。したがって、repaint メソッドは、アプレットまたはそのサブクラスを拡張したクラスから直接呼び出すことができます。

Java での再描画はどのように機能しますか?

repaint メソッドは Applet クラスで使用できる最終メソッドであるため、オーバーライドできません。 repaint メソッドを使用する場合は、アプレット クラスのサブクラスから直接呼び出す必要があります。 repaint メソッドは、アプレットのペイント サイクルの更新を処理します。コンポーネント自体を再描画したい場合は、必ず repaint メソッドを呼び出す必要があります。コンポーネントの外観を変更したが、サイズは何も変更しなかった場合は、repaint メソッドを呼び出して、グラフィカル ユーザー インターフェイス上のコンポーネントの新しい外観を更新できます。 repaintメソッドはアプレットクラスの非同期メソッドです。 repaint メソッドの呼び出しが行われると、少し遅れてコンポーネントの消去と再描画のリクエストが実行されます。

コンポーネントから repaint メソッドが呼び出されるたびに、リクエストがグラフィカル ユーザー インターフェイスに送信され、グラフィカル ユーザー インターフェイスと通信して、将来のインスタンスで何らかのアクションを実行します。 repaint メソッドの背後にある全体的な考え方は、paint () メソッドの直接呼び出しを避けることです。

Java で repaint メソッドを実装する例

次に、repaint メソッドの使用法を示す Java の例をいくつか見ていきます。

例 #1

Java で repaint メソッドがどのように使用されるかを示す例は次のとおりです。

コード:

package com.edubca.repaintdemo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.applet.Applet;
// class extending applet component and implementing mouse event listener
public class RepaintDemo extends Applet implements MouseListener {
private Vector vector;
public RepaintDemo() {
vector = new Vector();
setBackground(Color.red);
addMouseListener(this);
}
public void paint(Graphics graphics) { // paint method implementation
super.paint(graphics);
graphics.setColor(Color.black);
Enumeration enumeration = vector.elements();
while(enumeration.hasMoreElements()) {
Point p = (Point)(enumeration.nextElement());
graphics.drawRect(p.x-20, p.y-20, 40, 40);
}
}
public void mousePressed(MouseEvent mouseevent) {
vector.add(mouseevent.getPoint());
repaint(); // call repaint() method
}
public void mouseClicked(MouseEvent mouseevent) {}
public void mouseEntered(MouseEvent mouseevent) {}
public void mouseExited(MouseEvent mouseevent) {}
public void mouseReleased(MouseEvent mouseevent) {}
public static void main(String args[]) {
JFrame frame = new JFrame(); // creating a jFrame object
frame.getContentPane().add(new RepaintDemo());      // Adding Window
frame.setTitle("Repaint Method Demo");       // set title of the window
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(375, 250);    // set size of window
frame.setVisible(true);        // set window as visible
}
}

出力:

Javaで再描画する

マウスクリックイベントが実行されると、次の図形が黒色の境界線で表示されます。これは、update メソッドを呼び出してからペイントする repaint メソッドを通じて行われることに注意してください。これにより、クリック イベントが実行された直後に表示される形状を確認できるようになります。

Javaで再描画する

例 #2

repaint メソッドの使用をより明確にするために、別の例を次に示します。

コード:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.applet.Applet;
import java.awt.Graphics;
// class extending
public class RepaintDemo extends Applet  {
int test=2;
public void paint(Graphics graphics)
{
super.paint(graphics);
setBackground(Color.cyan);   // set backgroung color of window
graphics.setColor(Color.black);   // set color of Text appearing on window
graphics.drawString("Value of Variable test = "+test, 80, 80);
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex){}
// increasing value of variable by 1 and update its value of GUI
test++;
repaint();
}
}

出力:

Javaで再描画する

上記の例では、アプレットがあり、その中で test という変数が宣言されています。変数 test の値を継続的にインクリメントしており、変数の更新された値がユーザー インターフェイスに確実に表示されるようにしたいと考えています。したがって、paint メソッドの前に update メソッドを確実に呼び出す repaint メソッドを使用しています。上記のプログラムの出力。テストのこのウィンドウ値では、変数は常に増加しており、更新された値が GUI に表示されます。

結論

上記の例は、再描画メソッドとその機能を明確に理解するのに役立ちます。アプレットの更新とペイント サイクルを呼び出す場合は、repaint メソッドを呼び出す必要があります。呼び出した repaint メソッドは、コンポーネントの外観を即座に更新します。

以上がJavaで再描画するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:JavaのreplaceAll()次の記事:JavaのreplaceAll()