�ڎ�
�O���t�B�b�N�X�p�̃E�B���h�E��p�ӂ��AGraphics �N���X�̕`��p�e�탁�\�b�h���Ăяo���Ď��s���邱�Ƃɂ��A�O���t��\�����邱�Ƃ��o����B
�E�B���h�E�́A�u���E�U�𗘗p���邩�A Frame �N���X�̃T�u�N���X���쐬����B
�ȈՃA�v���P�[�V�������Ӗ������A�v���b�g���쐬����ƁA�u���E�U���E�B���h�E����ɂ��邱�Ƃ��o����B�A�v���b�g�r�����[�ƌĂ��d�|�����g���āA�u���E�U�ɕ\���������ꍇ�̗l�q���v���r���[���邱�Ƃ��o����B
�A�v���b�g�� Applet �N���X���p�������T�u�N���X���`���邱�ƂŎ��s�ł���Bpaint() ���\�b�h���I�[�o�[���C�h���āAGraphics �N���X�̊�{�}�`��`�悷�郁�\�b�h��g�ݍ��킹�ĕ\������B���͂��̍��ł���B
public class MyApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello Java!", 150, 100);
g.fillOval(100, 150, 200, 100);
g.setColor(Color.WHITE);
g.fillRect(150, 175, 100, 50);
}
}
extends Applet �� Applet �N���X���p�������T�u�N���X���`���Ă���BdrawString() �͕������\������AfillOval() �͒���h��Ԃ����ȉ~��`���AsetColor() �͕`��̐F���w�肷��AfillRect() �͒���h��Ԃ��������`��`�� Graphics �N���X�̃��\�b�h�ł���B
���s����ƁA��ʍ���Ɂu�A�v���b�g�v�Ƃ����^�C�g���̏����ȃE�B���h�E���\������A����ɁuHello Java!�v�Ƃ��������\������A���̉��Ɉꕔ�����������ꂽ�����ȉ~�i�̈ꕔ�j���\�������B�A�v���b�g�r���A�[�̃f�t�H���g�̃E�B���h�E�T�C�Y�� 200 x 200 �Ȃ̂ŁA�\�����S�������Ȃ��ꍇ�́A��ʉE�����h���b�O����Ή�ʂ̑傫����ς��邱�Ƃ��o����B�u����v�{�^�����N���b�N����ƏI������B
Frame �N���X���p�������T�u�N���X�����A���̃C���X�^���X���쐬���Ď��s�����邱�Ƃɂ��A�����̃E�B���h�E��\�������邱�Ƃ��o����B�A�v���b�g�̏ꍇ�ɔ�ׂāA�T�C�Y�����߁A������u������v������A�Ƃ����]�v�ȍ�Ɓi�R���X�g���N�^�j���K�v�ɂȂ�B�܂��A�v���O�����������߂� main() ���\�b�h�̒�`���K�v�ɂȂ�B���͂��̍��ł���B
class MyFrame extends Frame {
// �R���X�g���N�^
MyFrame() {
this.setSize(400, 300); // �E�B���h�E�̑傫����ݒ�i�� x �c�A�r�b�g���j
this.setVisible(true); // �E�B���h�E��\������
}
// �ŏ��Ɏ��s����郁�\�b�h
public static void main(String[] args) {
new MyFrame();
}
// paint ���\�b�h�̏�������
public void paint(Graphics g) {
g.drawString("Hello Java!", 150, 100); // ������\��
g.fillOval(100, 150, 200, 100); // �h��Ԃ��ȉ~�i�f�t�H���g�͍��F�j
g.setColor(Color.WHITE); // �\���F�̐ݒ�
g.fillRect(150, 175, 100, 50); // ���������`
}
}
extens Frame �� Frame �N���X���p�������T�u�N���X���`���Ă���BsetSize() �ŃE�B���h�E�̑傫�����w�肵�AsetVisible() �ŃE�B���h�E��\�����Ă���Bmain() ���\�b�h�ł́A���̃N���X�̃C���X�^���X���쐬���Ă���inew MyFrame()�j�B
���s���ʂ̓A�v���b�g�̏ꍇ�Ɠ����ł���B���̃N���X�ɂ̓E�B���h�E�́u����v�{�^�����N���b�N�������̏�������`����Ă��Ȃ��̂ŁA�u����v�{�^�����N���b�N���Ă������������Ȃ��B
�`��̎菇�͈ȉ��̒ʂ�Bpaint() ���\�b�h�����s����O�� repaint() ���\�b�h�i�`�������j���Ăяo����A����update() ���\�b�h�i�������j�A�Ō�� paint() ���\�b�h���Ăяo����āA���ۂ̊G��`���B�܂��A�E�B���h�E�T�C�Y���ς������A�ʂ̃E�B���h�E�̉��ɂȂ��āA�ĂёO�ʂɕ\�������ȂǁA�E�B���h�E�̍ĕ`�悪�K�v�ɂȂ�ƁArepaint() - update() - paint() �ɏ��ŏ�ɌĂяo�����Brepaint(), update() �́A�ʏ�͓Ǝ��ɕt�������邱�Ɓi�I�[�o�[���C�h�j�͂Ȃ��̂ŁA�v���O�����ɏ����K�v�͂Ȃ��B
��{�I�Ȑ}�`�╶�����\�����邽�߂ɁAGraphics �N���X�ɗl�X�ȃ��\�b�h���p�ӂ���Ă���BdrawXxx() �͊O�`���AfillXxx() �͓�����h��Ԃ��A�Ƃ����Ⴂ������B
| ���\�b�h�� | ���� | �@�@ | ���\�b�h�� | ���� |
|---|---|---|---|---|
drawLine |
���������� | drawRect, fillRect |
�����` | |
drawPolyline |
�܂�������� | drawRoundRect, fillRoundRect |
�p�̊ۂ������` | |
drawString |
�������\������ | drawPolygon, fillPolygon |
���p�` | |
clearRect |
�w�i�F�̒����`�i�����j | drawOval, fillOval |
�~�A�ȉ~ | |
setColor(Color) |
�y���̐F��ݒ�A�擾 | drawArc, fillArc |
�~�� | |
setFont(Font) |
�t�H���g�̐ݒ� | draw3DRect, fill3DRect |
���̒����`�i�����́j |
���̑��ɁA����̈�̃r�b�g�}�b�v�����R�s�[���� copyArea()�Aimage �I�u�W�F�N�g��\������ drawImage() �Ȃǂ��g����Bcreate() �́A�w�肵�������`�̈�̕`��p�I�u�W�F�N�g������Bdispose() �͎g�p���̃V�X�e�����\�[�X���������Bpaint() ���\�b�h���g��Ȃ��ꍇ�ɃS�~���������邽�߂̃��\�b�h�B
�}�`�╶���́A�\���ʒu���w�肷�邽�߂ɁA���߂�ꂽ���W�n��p����B�\���̈�i�E�B���h�E�j�͒����`�ŁA��������_�A���������� x ���A���������� y ���A�E���A�����𐳕����Ƃ��A�s�N�Z���P�ʁiint �^���j�Ŏw�肳���B
�\���̈�̑傫����\�����߂ɁAint �^�����g�ݍ��킹�� Dimension �^������B��̐��� width, height �ɂ���ĎQ�Ƃ��邱�Ƃ��o����iDimension.width, Dimension.height�j�B
�A�v���b�g��t���[�����`����Ƃ��A�\���̈�̉����iwidth�j�ƍ����iheight�j���s�N�Z�����Ŏw�肵�� setSize() ���\�b�h���g���B���Ƃ��AsetSize(800,600); �isetSize(new Dimension(800, 600)); �Ƃ��Ă������j�́A������ 800 �s�N�Z���A�c���� 600 �s�N�Z���̉�ʂ�ݒ肷��B
���ݎg���Ă����ʂ̉��A�c�̑傫���i�s�N�Z�����j�� this.getWidth(), this.getHeight() �ɂ���Ēm�邱�Ƃ��o����B
Frame ���p�������N���X���`�����ꍇ�A�\�������E�B���h�E�̓^�C�g���o�[�Ƃ��ďォ��30�s�N�Z���A���̘͂g�Ƃ��� 8 �s�N�Z���g���Ă���̂ŁA���ۂɎg�����ʂ́A���オ (8, 30)�A�E���� (this.getWidth()-8, this.getHeight()-8) �͈̔͂ł���B
�����`��~�Ȃǂ̐}�`��`���ꍇ�A��������N�_�ƂȂ�B����̍��W�i(x,y)�j�ƁA�}�`�̑傫���iDimension(width,height)�j���w�肷��B�������\������ꍇ�́A���������N�_�Ƃ��钷���`�̈�ɕ`�����B
���w�����g���Ƃ��Ay �����������]���Ă���̂ŁA���ӂ��K�v�ł���B�Ⴆ�A�_ (Math.cos(t), Math.sin(t)) �́At ���������Ƃ��A�i�����v���ł͂Ȃ��j���v���ɓ����B
�A�j���[�V�����́A���Ԋu�ʼn�ʂ��������`���ς��邱�Ƃɂ���ē�����\������B�������[�v������āApaint() ���J��Ԃ��ĂׂΗǂ��B
���̃v���O�����́A�{�[�����]����l�q�������������̂ł���B
public class TestAnim extends Frame {
int x = 0;
TestAnim() {
this.setSize(400, 300);
setVisible(true);
run(); // �A�j���[�V�����J�n
}
public static void main(String[] a) {
new TestAnim();
}
public void run() {
while (true) { // �������[�v
x = x + 1;
if (x > 400) x = 0;
repaint(); // ��ʍX�V
try {
Thread.sleep(10); // ��ʍX�V�Ԋu�w��
} catch (Exception e) { }
}
}
public void paint(Graphics g) {
g.drawOval(x, 100, 50, 50); // ���ۂ̉摜
}
}
���̃v���O���������s����ƁA�~�Ղ�������E�֓]�����Ă���悤�Ɍ�����B
�v���O�����̉���F
run() ���\�b�h���Ă�ł���Brun() �� repaint() �� Thread.sleep(10) �����[�v�Ŏ��s��������Brepaint() �͉�ʂ�`�������郁�\�b�h�AThread.sliip(10) �͎��s�� 10 �~���b��~���郁�\�b�h�ł���Bpaint() ���\�b�h�ł́Ax �̒l���ύX����A�V���� x �̒l���g���ĉ~��`���Ă���B���̌��ʁA�P�b�Ԃ�100 ��̕`���������s���A���̓s�x�~�̍�����W���ω�����̂ŁA�~��������E�֓����Ă���悤�Ɍ�����Btry ... catch �� sleep() ���\�b�h�Ő����銄���݂����邽�߂Ɏg���Ă���B�v���O������������ƁApaint() ���\�b�h�ɂ���ĉ~���d�Ȃ��ĕ`�悳���悤�Ɍ����邪�Apaint() ���\�b�h�͎��s����O�� repaint(), update() ���\�b�h�����s���Ă��������ʂ��N���A���Ă���A�����ɕ`����Ă��郁�\�b�h�����s����̂ŁA���O�܂ŕ`����Ă����~�͏�������A�V���ɕ`���ꂽ�~�������\�������B
���̌��ʂƂ��āA�O�̈ʒu���班�������������~���\�������̂ŁA�����Ă��邩�̂悤�Ɍ�����B�Ⴆ�A paint() ���\�b�h�̒��� g.drawOval(x, x, 30, 30); ��lj�����ƁA���ォ��E���֓������U��̉~�������ɕ\�������Bpaint() ���\�b�h�̍H�v�Ŗނ��炵�������������邱�Ƃ��\�����A�������~�߂���A�r������lj������肷��Ƃ������G�Ȃ��Ƃ��������悤�Ƃ���ƁA�ʂ̎d�|�����K�v�ł���B
Thread.sleep() ���\�b�h�Ŏg��ꂽ�X���b�h Thread �̍l����������ł���B
�R���s���[�^�ŁA����d�������s���邽�߂̈�A�̏����P�ʂ̓X���b�h�ithread of execution�j�ƌĂ��B�P��ړI�̃v���O�����ł̓X���b�h����Ɉӎ����邱�Ƃ͂Ȃ����A���s��������K�v������ꍇ�́A�����̃X���b�h���Ɏ��s������ꍇ������B�v�Z�����s����CPU�͈���������̂ŁACPU���Ԃ����������Ċe�X���b�h�����Ԃɏ������邱�ƂɂȂ�B
�v���O�������F���̃v���O�����͎O�̃X���b�h���ɓ���������ł���B
public class MyThread {
public static void main(String[] args) {
new SecondThread().start();
new ThirdThread().start();
for(int i=0; i<10; i++) {
System.out.println("�X���b�h�P�F" + i);
try {
Thread.sleep(500);
} catch(Exception e){};
}
}
}
class SecondThread extends Thread {
public void run() {
for(int i=0; ii<10; i++) {
System.out.println("�@�@�@�@�@�X���b�h�Q�F" + i);
try {
Thread.sleep(500);
} catch(Exception e){};
}
}
}
class ThirdThread extends Thread {
public void run() {
for(int i=0; ii<10; i++) {
System.out.println("�@�@�@�@�@�@�@�@�@�@�@�X���b�h�R�F" + i);
try {
Thread.sleep(500);
} catch(Exception e){};
}
}
}
�v���O�����̉���F
main ���\�b�h�ɏ����ꂽfor�������s����̂�1�{�ڂ̃X���b�h�ŁA���̏ꍇ�͕��ʂɏ����Ηǂ��B2�{�ځi�ȍ~�j�̃X���b�h�𑖂点��ɂ́AThread �N���X���p�������T�u�N���X�����Arun ���\�b�h�Ńv���O�������e���L�q����Bfor���[�v�Ɋ܂܂��uThread.sleep(10)�v�́A500�~���b�Ԃ̎��s��~���߂�\���Btry ... catch �� Thread.sleep ���\�b�h�Ő����銄�荞�݂��X���[���邽�߂̍\���ł���BThread.sleep(500) ���A�J�n����500�~���b�������s�����ʂ̃X���b�h�ł���B�@�@�@�@�@�X���b�h�Q�F0 �X���b�h�P�F0 �@�@�@�@�@�@�@�@�@�@�@�X���b�h�R�F0 �@�@�@�@�@�X���b�h�Q�F1 �X���b�h�P�F1 �@�@�@�@�@�@�@�@�@�@�@�X���b�h�R�F1 �@�@�@�@�@�@�@�@�@�@�@�X���b�h�R�F2 �X���b�h�P�F2���̗�ł́A3�̃X���b�h���A2, 1, 3, 1, 2, 3, 3, 2, 1, 3, 1, 2, 1, 2, 3, 2, 1, 3, 1, 3, 2, 2, 1, 3, 2, 3, 1, 2, 3, 1 �̏��Ɏ��s���ꂽ���A���̏����͎��s���邽�тɈႤ�\��������B
�i�ȉ��@�ȗ��j
Runnable �����������X���b�h�̎��s �X���b�h���~������A�V�K�ɊJ�n�������肷�邽�߂ɂ́AThread �N���X���p�������T�u�N���X�����Arun() ���\�b�h���I�[�o�[���C�h���Await(), sleep() ���\�b�h��g�ݍ��킹�Đ���̎d�g�݂����B���邢�́AThread �N���X�̃C���^�[�t�F�[�X�ł� Runnable ����������B
�A�j���[�V�������̂��̂́A��̃v���O�����ᓯ�l�Arun() ���\�b�h�̒��ɖ������[�v�����A���̒��� repaint() ���\�b�h�����s����B
Runnable �C���^�[�t�F�[�X���g�����v���O��������邽�߂̊�{�菇�͎��̒ʂ�B
Runnable �C���^�[�t�F�[�X��������(implements)run ���\�b�h��g�ݍ��݁Arun ���\�b�h�̒��ŁA��ʂ̕`���ς��������[�`���ƁA�ꎞ��~�p�� Thread.sleep() ��g�ݍ��݁AThread(this).start() ���\�b�h�����s�����v���O������
public class TestThread extends Frame implements Runnable {
int x = 0;
TextThread() {
this.setSize(400, 300);
setVisible(true);
// ���̃v���O�������X���b�h�Ƃ��Ď��s�J�n����
new Thread(this).start();
}
public static void main(String[] a) {
new TestThread();
}
public void run() {
while (true) {
x = x + 1;
if (x > 400) x = 0;
repaint();
try {
Thread.sleep(10);
} catch (Exception e) {
}
}
}
public void paint(Graphics g) {
g.drawOval(x, 100, 50, 50);
}
}
���̃v���O���������s����ƁA�~��������E�֓]����A����Ƃ���܂ōs�����獶�[�ɖ߂�A�Ƃ����ȒP�ȃA�j���[�V�������\�������B���̗�̂悤�ɁA�P�̂��̂ł���ARunnable ���������Ȃ��ŏ��̃v���O������ƂقƂ�Ǖς��Ȃ��B���ہA�ύX�����̂́ARunnabale ���������āA�R���X�g���N�^�� run() �̑���� new Thread(this).start(); �Ə��������������ł���Brun() �� Runnable �C���^�[�t�F�[�X�Ɋ܂܂�郁�\�b�h���I�[�o�[���C�h�������̂Ƃ݂Ȃ���Astart() �ɂ���ĊJ�n����邩��A���ڌĂяo���K�v�͂Ȃ��B
�v���O�����̐����F
Runnable ������(implements)����Bnew Thread(this).start() �����s���邱�ƂŃX���b�h���J�n����Arun() ���\�b�h���Ăяo������B���� run() ���\�b�h�́i�O�̃v���O�����ƈႢ�j Runnable �C���^�[�t�F�[�X�̂�����I�[�o�[���C�h�������̂Ƃ݂Ȃ����Brun() ���\�b�h�Apaint() ���\�b�h�͑O�̃v���O���������̂܂g���Ă���B
Thread �N���X���p�������X���b�h�̎��s Thread �N���X���p�������T�u�N���X�����A���̃C���X�^���X��g�ݍ��ނ��Ƃɂ���ăX���b�h�����s���邱�Ƃ��o����B
��{�菇�͎��̒ʂ�B
Thread ���p�������T�u�N���X�����irun()���\�b�h��g�ݍ��ށj�A�v���O������
public class TestAnim extends Frame {
int x = 0;
TestAnim() {
this.setSize(400, 300);
setVisible(true);
new MyThread(this, 0);
new MyThread(this, 200);
}
public static void main(String[] a) {
new TestAnim();
}
public void redraw(int x) {
this.x = x;
repaint();
}
public void paint(Graphics g) {
g.drawOval(x, 100, 50, 50);
}
}
class MyThread extends Thread {
int x;
TestAnim ta;
MyThread(TestAnim ta, int x) {
this.ta = ta;
this.x = x;
new Thread(this).start();
}
public void run() {
while (true) {
x = x + 1;
if (x > 400) x = 0;
ta.redraw(x);
try {
Thread.sleep(10);
} catch (Exception e) { }
}
}
}
�v���O���������s����ƁA��̉~��������E�Ɂi��]���Ȃ���j�ړ�����l�q���ώ@�ł���B
�v���O�����̐����F
MyThread �� Thread �N���X���p�������T�u�N���X�ŁA�R���X�g���N�^�ŌĂяo�����̃N���X�����L�����A�������W x ��ݒ肵�AThread(this).start() ���\�b�h���ĂԂ��ƂŁA�V���ȃX���b�h���J�n������Brun() ���\�b�h�� Runnable �����̏ꍇ�Ɠ����Ŗ������[�v����邪�A�����ł͍��W���X�V���邾���ŁA�`��p�̖��߂͒��ڏ������A�X�V���ꂽ���Ƃ������Ƃ��Č��̃N���X�̃��\�b�h redraw() ���Ăяo���Ă���B���̂��߁Aredraw() ���A�N�Z�X�ł���悤�Ɍ��̃N���X�����L�����Ă������Ƃ��K�v�ł���Brun() �̑���ɁA���� redraw() ���\�b�h���`����Ηǂ��Bnew MyThread �����s����ƁA�w�肳�ꂽ�ʒu����~�����������A�j���[�V�������i��̃X���b�h�Ƃ��āj�\�������B�ʂ̏������W��^���Ă���� new MyThread �����s����ƁA�V���ȉ~�̃A�j���[�V�������ʂ̃X���b�h�Ƃ��ăX�^�[�g����B�X���b�h�X�^�[�g�̃^�C�~���O�𐧌䂷��d�g�݁i�Ⴆ�A�ꎞ��~������A�}�E�X���N���b�N�����ʒu����A�j���[�V�������n�߂�Ȃǁj����荞�߂A��蕡�G�ȃA�j���[�V�������ł���B
�X���b�h���ꎞ���f���������Await() �����s����B�ĊJ�������ꍇ�́A���̎��s���~�����邽�߂� notify() �Ƃ������\�b�h�����s����B�����̊Ԃɂ͓������Ƃ�Ă��邱�Ƃ��K�v�Ȃ̂ŁAsynchronized ������^����K�v������B
�v���O������
public class ThreadPauseResume extends Frame implements Runnable, ActionListener {
int x = 100;
boolean pause = false; // �x�~��Ԃ��ۂ����L������_���ϐ�
ThreadPauseResume() {
this.setSize(400, 300);
// �ꎞ��~�A�ĊJ���g���邽�߂̓`�B��i�i�{�^���N���b�N�ő���j
Button bpause = new Button("pause");
bpause.addActionListener(this);
this.add(bpause, BorderLayout.NORTH);
Button bresume = new Button("resume");
bresume.addActionListener(this);
this.add(bresume, BorderLayout.SOUTH);
this.setVisible(true);
new Thread(this).start();
}
public static void main(String[] a) {
new ThreadPauseResume();
}
public void run() {
while(true) {
// �ꎞ��~��ԂłȂ��ꍇ�̂݁A�ĕ`����s
if (!pause) {
x = x + 1;
if(x > 400) x = 0;
repaint();
}
try {
Thread.sleep(10);
// �x�~��ԁipause=true�j�Ȃ�A�������Ȃ��Łu�҂v
synchronized(this) {
while(pause) wait();
}
} catch(Exception e) { }
}
}
// �ĊJ�{�^�����N���b�N���ꂽ���Ƃ�m�点��
public synchronized void myResume() {
notify();
}
public void paint(Graphics g) {
g.drawOval(x, 100, 50, 50);
}
// �{�^�����N���b�N���ꂽ�Ƃ��̏������`����
public void actionPerformed(ActionEvent ae) {
pause = !pause;
if (ae.getActionCommand() == "resume") {
myResume();
}
}
}
�v���O���������s����ƁA�{�^�����N���b�N���邱�Ƃŋʂ̓������~�܂�����ĊJ������A�Ƃ����������������Ă��邱�Ƃ��m���߂���B
�v���O�����̐����F
pause ���g���āA���ꂪ false �̊Ԃ����iif(!pause)�j�`�悷��A�Ƃ��Ă����悢�B ��~���Ă���� wait() ���\�b�h�����s����Bnotify() ���\�b�h�����s���邪�A�K�v�ȏ������ԈႢ�Ȃ����s���邽�߂ɁA���̃X���b�h�̎��s���ꎞ��~������K�v������B����̃v���O�����𑼂ɗD�悵�ď������邱�Ƃ�r������Ƃ����Asynchonized �������w�肷��BmyResume ���\�b�h������ł���Bsynchronized(this) �͂���ɑ������ߕ��Q��r���I�ɏ������邱�Ƃ��Ӗ����郁�\�b�h�ł��邪�Await() �͂�����w�肵�Ȃ��Ă�����ɓ����悤�Ɍ�����B ����̃R�����g�̂悤�ɁA�������������E�ֈړ����Ȃ���\������v���O�����̗�ł���B
Label �� Runnable �C���^�[�t�F�[�X���������A���̕\���ʒu���������E�ɂ��炷���Ƃɂ��A�\������郉�x���̕����E�Ɉړ����Ă����A�j���[�V�������������Ă���B��� Label �������_���ɐ�������Ă���E�[�ɏ����Ă����܂ł���̃X���b�h�Ƃ��Ă���B�E�[�ɏ������Ƃ��A�X���b�h�͒�~����B
public class MovingComment extends Frame implements Runnable {
int id = 0;
Dimension dim = new Dimension(800, 600);
MovingComment(String title) {
this.setSize(dim);
this.setTitle(title);
setLocationRelativeTo(null);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) { System.exit(0); }
});
this.setVisible(true);
new Thread(this).start();
}
public static void main(String[] a) {
new MovingComment("�����R�����g");
}
// �V�K�R�����g�̐����i�P�b�Ԃɕ��ςP�����j
public void run() {
while (true) {
if (Math.random() < 0.1) {
id++;
int y = id * 40 % (dim.height - 100) + 40;
Comments com = new Comments(id, y, dim.width);
add(com);
}
try {
Thread.sleep(100);
} catch (Exception e) {}
}
}
public void update(Graphics g) {
paint(g);
}
}
// Label �N���X�̊g���A�V�K���x���̐���
class Comments extends Label implements Runnable {
boolean runn = true;
int id;
int x, y, width = 100, height = 30, WD;
String[] comm = {"excellent", "good", "enough", "passably", "miserable",
"stupid", "no comment", "amazing", "fantastic", "funny", "OK",
"not too bad", "boring", "trash"};
int NC = comm.length;
Comments(int id, int y, int WD) {
this.id = id;
this.WD = WD;
this.y = y;
x = 0;
// �R�����g���X�g�����������_���ɑI��
this.setText(comm[(int)(Math.random()*NC)]);
this.setBounds(x, y, width, height);
new Thread(this).start();
}
// ��ʂ���O���܂Łi���� WD�j�E�ւ��炵�Ȃ���\������
public void run() {
while (runn) {
this.setBounds(x++, y, width, height);
if (x > WD)
runn = false;
try {
Thread.sleep(10);
} catch (Exception e) {}
}
}
}
�A�j���[�V�����̂悤�ɕp�ɂɕ`���ς���ipaint() ���Ăԁj�ƁA��ʂ�������āA���ɂ����B����́Apaint() ���\�b�h�����s����ꍇ�ɁA�iupdate() ���\�b�h�����s���āj��ʂ���������������Ă���V���ȃO���t�B�b�N�X��`�����ގd�g�݂ɂȂ��Ă��邩��ł���B�������������̕��@�������B
update() �������ς��� paint() ���\�b�h���ĂԂƁA���̑O�����Ƃ��� update() �����s���邱�ƂɂȂ��Ă���A�����ʼn�ʂ̏����������s����B��ʏ��������������Ȃ����߂ɂ́Aupdate() ���o�C�p�X����悤�ɏ����ς��Ă��܂��悢�B
public void paint(Graphics g) {
...
}
public void update(Graphics g) {
paint(g);
}
�������A�������邱�Ƃɂ���āA���O�Ɏ��s���ꂽ paint() �̓��e�͉�ʂɎc���Ă���̂ŁA�A�j���[�V�����̂悤�ɉ摜���������������悤�ȕ`����J��Ԃ��ꍇ�́A�O�Ղ��S���c���Ă��܂��B���O�ɕ`�����摜���c�����������͍�҂̐ӔC�ɂȂ�B�O�̉摜������������� clearRect() �����s����Ηǂ��B
paint() ���g���ƁA�`��ߒ������ׂĕ\������Ă���X�N���[����Ŏ��s����邽�߁A������̌����ɂȂ�B�ڂɌ����Ȃ��A����Ή��z�X�N���[���ŕ`�悵�A�����}������\��������悤�ɂ���A���X�N���[���̕`�������͈��ł��ނ��Ƃ���A������͏��Ȃ��Ȃ邱�Ƃ����҂ł���B
�ڂɌ����Ȃ����z�X�N���[���̓C���[�W�t�@�C���𗘗p���邱�ƂŎ����ł���BImage �N���X�̃C���X�^���X�� Graphics �̃��\�b�h���g���ĕ`�悵�AdrawImage() ���\�b�h���g���Ă��̉��z�X�N���[������x�ɕ`���B
// �C���[�W�t�@�C����p�ӂ���
Image img = null;
Graphics g;
// �O���t�B�b�N�X
public void paint(Graphics gr) {
super.paint(gr);
if (img == null) { // �C���[�W�t�@�C���̏�����
D = new Dimension(this.getSize());
img = this.createImage(D.width, D.height); // �`��p���z�X�N���[�����m��
g = img.getGraphics(); // ���ۂ̕`��p Graphics
}
gr.drawImage(img, 0, 0, this); // ���z�X�N���[����\�ɕ\��
}
// ������h�~
public void update(Graphics g) {
paint(g);
}
// ���ۂ̎g�p��
public void draw() {
g.drawOval(100, 100, 200, 100);
repaint();
}
�_�u���o�b�t�@�����O�ŕ`�悷��v���O���������菇���܂Ƃ߂�ƁA�ȉ��̂悤�ɂȂ�B
Image �̃C���X�^���X�����AcreateImage() ���\�b�h�ʼn��z�E�B���h�E�̑傫����ݒ肷��Graphics �̃C���X�^���X�����A�`�悷��E�B���h�E�����z�E�B���h�E�ɐݒ肷��paint() ���\�b�h�� drawImage() ���\�b�h��g�ݍ���repaint() ���ߕ��������C���[�W�t�@�C�����g���ƁAcopyArea ���\�b�h�𗘗p���ĉ�ʕ\���s�ړ��i�X�N���[���j�����邱�Ƃ��o����B�ucopyArea(x,y,w,h,xx,yy)�v�́A������W�� (x, y) �̑傫�� w x h �̉�ʂ��A������W�� (xx, yy) �ƂȂ�ʒu�ɃR�s�[�y�[�X�g���郁�\�b�h�ł���B�����������ɂ���c������������X�N���[�������悤�Ɍ�����B
���̃v���O�����́A�}�E�X�z�C�[���̓����ɉ����ĉ�ʂ��㉺�ɃX�N���[������@�\�������ꂽ�O���t�B�b�N�p�̃p�l���̗�ł���B
�v���O�������F
public class MyMouseEvent3 extends Frame {
Graphics g;
Dimension dim; // �E�B���h�E�̑傫���w��
Point prev, now = new Point(0,0); // �}�E�X�ʒu���L��
MyMouseEvent3() {
this.setSize(400, 400);
this.addMouseListener(new MyMouseAdapter());
this.addMouseMotionListener(new MyMouseMotionAdapter());
this.addMouseWheelListener(new MyMouseWheelListener());
this.setVisible(true);
g = this.getGraphics();
dim = this.getSize();
}
public static void main(String[] args) {
new MyMouseEvent3();
}
// �}�E�X�N���b�N���̏���
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent me) {
Point p = me.getPoint();
g.drawLine(p.x - 5, p.y, p.x + 5, p.y);
g.drawLine(p.x, p.y - 5, p.x, p.y + 5);
}
}
// �}�E�X�h���b�O���̏���
class MyMouseMotionAdapter extends MouseMotionAdapter {
public void mouseDragged(MouseEvent me) {
prev = now;
now = me.getPoint();
if(Math.abs(prev.x-now.x) + Math.abs(prev.y-now.y) > 20) prev = now;
g.drawLine(prev.x, prev.y, now.x, now.y);
}
}
// �}�E�X�z�C�[����]���̏���
class MyMouseWheelListener implements MouseWheelListener {
public void mouseWheelMoved(MouseWheelEvent me) {
int rt = me.getWheelRotation();
if(rt > 0) { // �X�N���[���A�b�v
g.copyArea(0, rt, dim.width, dim.height, 0, -rt);
g.clearRect(0, dim.height-rt, dim.width, rt);
} else { // �X�N���[���_�E��
g.copyArea(0, 0, dim.width, dim.height, 0, -rt);
g.clearRect(0, 0, dim.width, -rt);
}
}
}
}
�v���O�����̐����F
MouseWheelListener �́A�}�E�X�z�C�[�����������Ƃ����荞�ݏ������s�����X�i�[�ŁAMouseWheelEvent �C�x���g�����AmouseWheelMoved ���\�b�h�ŏ�������B�z�C�[���̉�]�ʂ� getWheelRotation �Œm�邱�Ƃ��o����B�Ȃ����A�����N���X�Œ�`���Ȃ��ƃG���[�ɂȂ�B
�ȈՓI�ȕ`��@�Ƃ��āApaint() ���\�b�h���g�킸�ɁA���� Graphics �N���X�̃��\�b�h�����s���邱�Ƃ��\�ł���B
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent me) {
Graphics gr = getGraphics();
x = me.getX();
y = me.getY();
gr.drawString("�N���b�N����܂���", x, y);
gr.dispose();
}
}
�v���O�����̐����F
3�s�ڂ� getGraphics()���\�b�h�� this.getGraphics() �Ə����Ƃ�����ȗ��������̂ŁA�u���́v�E�B���h�E�̃O���t�B�b�N�X��`�����ޕϐ��i�C���X�^���X�j���w�肵�Ă���B
6�s�ڂŁA���̃C���X�^���X�� drawString() ���\�b�h��ǂ�ŕ�������E�B���h�E�ɕ\������B
7�s�ڂ́A�u�S�~�������Â���v�Ƃ����d�������郁�\�b�h�B��ʂɃO���t�B�b�N�X�𗘗p����ƍ�Ɨp�ɑ����̃��������g�p���邽�߂ɁA�s�v�ƂȂ�����������������ăv���O�����̕��S���y������K��������B
���ǁA�ȉ��̎菇�� paint() ���g��Ȃ��`����������邱�Ƃ��\�ƂȂ�B
Graphics�v�̃C���X�^���X�����āigetGraphics()�jdispose()�j���̃v���O������ paint() ���\�b�h�ƌ�������S���������������邪�A�E�B���h�E�T�C�Y��ς���ƁA�����Ă�����̂������Ă��܂��B�O���t�B�b�N�X�́A�����ς��Ƃ��̓s�x�Arepaint() - update() - paint() �����s�����A�Ƃ����������������A���̃v���O�����ɂ� paint() ���\�b�h���Ȃ��̂ŁAupdate() �ʼn�ʂ����������܂܂ɂȂ��Ă��܂�����ł���B