repaint()
を拡張するクラスの方法を理解しようとしていJComponent
ます。各クラスを拡張JComponent
してから、独自のpaintComponent()
. ( super.paintComponent()
。この方法で、サークル クラスまたは作成したい任意のクラスを作成できます。それが にrepaint()
追加されている限り、必要なときにいつでも作成できます。以下は、必要なすべてのコードです。走る。JPanel
JFrame
クラス 1:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class DDHGenericFrame extends JFrame {
private static final long serialVersionUID = 1L;
/* User defined class that is below */
DDHGenericPanel d = new DDHGenericPanel();
public DDHGenericFrame() {
initUI();
}
public final void initUI() {
add(d);
setSize(650, 350);
setTitle("Lines");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
DDHGenericFrame ex = new DDHGenericFrame();
ex.setVisible(true);
}
}
クラス 2:
import java.awt.Graphics;
import javax.swing.JPanel;
class DDHGenericPanel extends JPanel {
private static final long serialVersionUID = 1L;
DDHGenericPanel() {
System.out.println("DDH Generic JPanel");
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
//paint code goes here of whatever
}
}
クラス 3:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class DDHCircleOne extends JComponent {
private static final long serialVersionUID = 1L;
int counter = 0;
public DDHCircleOne() {
counter++;
System.out.println("DDHCircle Constructor");
}
public void paintComponent(Graphics g2) {
super.paintComponent(g2);
Graphics2D c2D = (Graphics2D) g2;
c2D.setColor(Color.yellow);
c2D.fillRect(0, 0, getSize().width, getSize().height);
if (counter % 2 == 2) {
System.out.println("RED");
counter++;
c2D.setColor(Color.red);
c2D.fillRect(0, 0, getSize().width, getSize().height);
} else {
System.out.println("BLUE");
counter++;
c2D.setColor(Color.blue);
c2D.fillRect(0, 0, getSize().width, getSize().height);
}
}
}
上記の 3 つのクラスは、パッケージに含まれているものです。DDHCircleOne
インスタンスが作成され、メソッドが呼び出されるたびに、自分で再描画できるようにしたいと考えていますrepaint()
。このようにして、拡張JComponent
してからオーバーライドしてpaintComponent()
から呼び出すクラスを作成できますrepaint()
。
赤で再描画するボタンと青で再描画する別のボタンがある場合、フレーム内にある円または何かvariableName.repaint()
が呼び出されると、それ自体が再描画されます。
doauuf@outlook.com