Java �O���t�B�J�����[�U�C���^�[�t�F�[�X

�ڎ�


AWT��Swing

AWT �Ƃ�Abstract Window Toolkit �̗��ŁA�O���t�B�b�N���[�U�C���^�[�t�F�[�X�̃v���O�����i�N���X�j�̏W�܂�ł���BSwing �� AWT �̃R���|�[�l���g�ɂ��낢��ȋ@�\��t�������R���|�[�l���g�̏W�܂�ł���B�R���\�[����ʂŃe�L�X�g�̓��o�͂������Ă��镪�ɂ͕s�v�����A���͒��Ƀ��[�U���v���O�����̗����ς�����A�v�Z���ʂɉ����ĐV�K�̃f�[�^����͂�����ȂǁA���� �����g������̗ǂ��v���O��������肽���ꍇ�� AWT ���邢�� swing �𗘗p����Ƃ悢�B

Java�ɗp�ӂ���Ă���A�E�B���h�E�Y�̑���ł悭�g����{�^����e�L�X�g���̓{�b�N�X�A���j���[�A�_�C�A���O�{�b�N�X�Ȃǂ� AWT�R���|�[�l���g�Ƃ����B���s���ɂ��̃R���|�[�l���g�𑀍삷�邱�Ƃɂ��u�C�x���g�v����������B���̃C�x���g�̔������V�X�e�������m����d�g�݂����X�i�[�Ƃ����B�C�x���g�����������Ƃ��̏������v���O�����Ƃ��ď����A���X�i�[�𗘗p���ăC�x���g�̔������֒m�����Ƃ����̃v���O�����𓮂����A�Ƃ����d�g�݂����Ηǂ��B�R���|�[�l���g�𗘗p���邽�߂ɂ́A�����ݒu����E�B���h�E���K�v�ƂȂ�B�E�B���h�E�́A�A�v���b�g���쐬���Ċ����̃u���E�U�𗘗p���邱�Ƃ��o���邪�AFrame �ƌĂ΂��R���|�[�l���g�Ŏ��삷�邱�Ƃ��ł���B

�l�X�ȃR���|�[�l���g

�悭�g����R���|�[�l���g�Ƃ��Ď��̂悤�Ȃ��̂�����BAWT �̃R���|�[�l���g���̑O�ɁuJ�v��t����� Swing �̃R���|�[�l���g���ɂȂ鎖���������ASwing �ŐV���ɒ�`���ꂽ���̂������B

�ړI �N���X�iAWT, Swing�j
�E�B���h�E�����
Frame, JFrame
�{�^�������
Button, JButton
�e�L�X�g���̓{�b�N�X�����i�P��s�j
TextField, JTextField
�e�L�X�g�\���{�b�N�X������i�����s�p�j
TextArea, JTextArea
�e�L�X�g�^�}�`��\������
Label, JLabel
�i�R���|�[�l���g��z�u����j�g�����
Panel, JPanel
�摜��������Panel�����
Canvas
�X���C�h�‚܂ݓ��͑��u����� Scrollbar, Slider, JScrollbar, JSlider

���ɁA(J)Dialog, (J)Checkbox, (J)Choice, (J)List, (J)MenuBar, (J)PupupMenu �ȂǁBSwing �ŐV���ɒ�`���ꂽ���̂ɁA JComboBox, JList, JMenuBar, JPupupMenu �Ȃǂ�����B

Swing �́A�قȂ�OS�ł��������b�N�A���h�t�B�[�������‚悤�ɐ݌v����Ă���A�@�\���[�����Ă��邪�A���̕��A�t�b�g���[�N���d���Ȃ��Ă���B

���C�A�E�g

�R���|�[�l���g���E�B���h�E�ɔz�u���邽�߂Ƀ��C�A�E�g�}�l�[�W���[�Ƃ����d�g�݂𗘗p����B�A�v���b�g�̃f�t�H���g���C�A�E�g�}�l�[�W���[�� FlowLayout �ŁA���ォ�珇�ԂɁA��`���ꂽ���Ԃɔz�u�����BFrame �̃f�t�H���g���C�A�E�g�}�l�[�W���[�́@BorderLayout �ŁA�㉺���E�ƒ�����5�J���̂����ꂩ�w�肵���ꏊ�ɔz�u�����ithis.add(button, "North"); �Ȃǁj�B�E�B���h�E�̍��W���w�肵�āA���R�Ƀ��C�A�E�g�������ꍇ�� setLayout(null) �Ƃ������\�b�h�����s����B

�悭�g���郌�C�A�E�g�ɂ́A���ɁAGridLayout, BorderBagLayout, CardLayout, BoxLayout �Ȃǂ�����B

�R���|�[�l���g�����̂悤�ɒ�`����Ă���Ƃ����΂����AFlowLayout �� GridLayout �̈Ⴂ�������B

// �{�^��
	bt = new Button("add");
	bt.addActionListener(this);
	this.add(bt);		
// ���x��
	this.add(new Label("�@"));		
	this.add(new Label("���Z����l"));		
// �e�L�X�g�t�B�[���h
	tf = new TextField("0", 5);
	this.add(tf);		
// ���x��
this.add(new Label("�@�@���v")); // �e�L�X�g�t�B�[���h tf2 = new TextField("0", 10); tf2.addTextListener(this); this.add(tf2);
���̍��� FlowLayout �̗�A�E��GridLayout �̗�ł���B

�@�@�@�@�@layout

���ǂ�

�{�^��

��‚��̑I�����������A������N���b�N���邱�ƂŎ��s������e��I�ԁA�Ƃ����v���O���~���O�̓{�^�����g�����ƂŌ����悭�����ł���B

�{�^����g�ݍ��񂾃A�v���b�g�̗�

�u���E�U���E�B���h�E�Ƃ��ė��p����v���O�������A�v���b�g�Ƃ����B���̃v���O�����́A�{�^�����N���b�N����ƁA�N���b�N��񂪃u���E�U�ɕ\�������Ƃ������̂ł���B

// #2: �N���X��`
public class AWTsampleApplet extends Applet implements ActionListener {
	int counter = 0;
// #3: �����ݒ�
public void init() { JButton btn = new JButton("click me"); btn.addActionListener(this); this.add(btn); } // #4: �`�� public void paint(Graphics gr) { if(counter > 0) gr.drawString("�{�^���� "+counter+"��N���b�N����܂���", 10, 50); } // #5: �C�x���g���荞�ݏ��� public void actionPerformed(ActionEvent ae) { counter++; repaint(); } }

�v���O�����̐����F

�u���E�U�łȂ��A����̃t���[�����{�^����g�ݍ��ރE�B���h�E�Ƃ��Ďg���ꍇ�́A��̃v���O������ #2, #3 �̃E�B���h�E�����Ɋւ�镔�����ύX����邾���ŁAAWT�R���|�[�l���g�Ɋւ�镔���͓����ł���B

�{�^����g�ݍ��񂾃t���[���̗�

���́ASwing �� JFrame ���p�������T�u�N���X������ăE�B���h�E��\�������A��Ɠ����悤�Ȏd��������v���O�����̗�ł���B�C�x���g�����v���O�����͏ȗ������B

class TestJFrame {
// ���C�����\�b�h
public static void main(String[] args) { MyJFrame myFrame = new MyJFrame("JFrame �̃T���v��");
myFrame.setVisible(true); }
}

class MyJFrame extends JFrame {
// �R���X�g���N�^ MyJFrame(String title) { setSize(new Dimension(300, 200)); // �E�B���h�E�T�C�Y setTitle(title); // �^�C�g���\�� setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // �v���O�����̏I�� this.setLayout(new FlowLayout()); // ���C�A�E�g�̐ݒ� // �{�^���̒�`
JButton btn = new JButton("�{�^��"); btn.addActionListener(this);
add(btn); // �{�^���̒lj� } }

�v���O�����̐����F

AWT �� Frame �𐶐�����ꍇ�́A�uextends JFrame�v���uextends Frame�v�ɕς��A�u�‚���v�{�^�����N���b�N���ꂽ�Ƃ��̏����p���\�b�h�usetDefaultCloseOperation�v������ WindowListener �𗘗p���郁�\�b�h�ɒu��������Ηǂ��B

	this.addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent we) { System.exit(0); }
	});
JFrame �𐶐����� JButton ���`�������́i���}�j�ƁAFrame �𐶐����� Button ���`�������́i�E�}�j�̎��s���ʂ͎��̒ʂ�B�t���[���̔w�i�F�ƃ{�^���̃f�U�C��������Ă���B

�@�@�@�@�@frame

�l�X�ȃR���|�[�l���g

�p�l�������A�R���|�[�l���g��z�u����FJPanel, JButton, JLabel, JTextField, ...

�p�l���́A�����̃E�B���h�E�ɐV���ȁi�����j�t���[�������B�l�X�ȃR���|�[�l���g��p�r�ʂɃO���[�v�����ĕʁX�̃p�l���ɔz�u����ƁA�����ڂ��v���O�����R�[�h���Ȍ��ɂȂ�B

// �t���[���̃��C�A�E�g���t���[���C�A�E�g�ɕς���
setLayout(null);

// �p�l������� JPanel myPanel = new JPanel(); myPanel.setBounds(20, 10, 100, fSize.height - 60); // �ʒu���� myPanel.setBorder(new BevelBorder(BevelBorder.RAISED)); // ���̕\�� myPanel.setLayout(new GridLayout(4, 1)); // �i�q�󃌃C�A�E�g�ɂ���
// ���x��������ăp�l���ɓ\��t���� JLabel lblb = new JLabel("�����", JLabel.CENTER); // �����ɕ\�� myPanel.add(lblb); // �p�l���ɓ\��t���� // �e�L�X�g�t�B�[���h������ăp�l���ɓ\��t���� tf = new JTextField(4); // 4�������̕����m�� tf.addActionListener(this); // Enter���͎����荞�� myPanel.add(tf);
// �{�^��������ăp�l���ɓ\��t���� JButton btn = new JButton("�{�^��"); btn.addActionListener(this); myPanel.add(btn);
// �O���t�B�b�N���x��������ăp�l���ɓ\��t���� JLabel lblc = new JLabel(); lblc.setIcon(new ImageIcon("./eclipse.png")); // �C���[�W��\�������� lblc.setHorizontalAlignment(JLabel.CENTER); // �������� myPanel.add(lblc);
// �p�l�����E�B���h�E�i�t���[���j�ɓ\��t���� add(myPanel);

JLabel �͕��������łȂ��A�C���[�W��\�����邱�Ƃ��o����iATM �� Label �͂ł��Ȃ��j�B�unew ImageIcon("./eclipse.png")�v�ɂ���ĐV���ȃC���[�W�t�@�C�������A������uaddIcon�v���\�b�h�őg�ݍ��ށB

�R���|�[�l���g�ݒu�̍��W�F�t���[���C�A�E�g�ɂ��č��W�w�肷��ꍇ�AJFrame �� Frame �ł͌��_���قȂ�BFrame �̏ꍇ�A���_�̓^�C�g���o�[�̉��Ȃ̂ŁA�B��Č����Ȃ��B32�h�b�g������K�v������B���́A�p�l���̍�����W�� (20, 10) �Ƃ����ꍇ�� JFrame �� Frame �ɐݒu�����ꍇ�̈Ⴂ�ł���B

    �@�@�@�@�@

�e�L�X�g�t�B�[���h

TextField �ɐV���ȃf�[�^�����͂��ꂽ�iEnter�L�[�������ꂽ�j�Ƃ��ɂ��鏈�������s����悤�ɂ������ꍇ�́A���̂悤�ɂ���BTestField �̖��O��tf �Ƃ���B

  1. ActionListener ����������B
  2. �utf.addActionListener(this);�v�ɂ����ActionListener �̊��荞�ݏ������”\�ɂ���B
  3. �uactionPerformed�v���\�b�h���I�[�o�[���C�h����B�uif(getSource() == tf) { ... }�v�̏����������ɕK�v�ȏ����������B
  4. TextField �̓��e�́ugetText�v���\�b�h�Ŏ��o�����Ƃ��o���A���l�ɕϊ�����ɂ́uInteger.parseInt(tf.getText());�v���邢�́uDouble.parseDouble(tf.getText());�v�Ƃ���B
public class Test extends Applet implements ActionListener {
	TextField tf;
	public void init() {
		tf = new TextField("123");
		tf.addActionListener(this);
		add(tf);
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == tf) {
			System.out.println("�f�[�^���� " + Integer.parseInt(tf.getText()));
		}
	}	
}

���邢�́A���l�Ȋ��荞�݂���������悤�ɂȂ�ƁA���荞�ݏ����p�̃v���O�����͕ʂ̐V���ȃN���X�Ƃ��Ē�`�����ق����������肷�邩������Ȃ��B���̏ꍇ�ɂ́A�R���X�g���N�^�ɂ���āA�Ăяo�����̃N���X���������n���Ă����Ƃ悢�B

public class Test extends Applet {
	TextField tf;
	public void init() {
		tf = new TextField("123");
		tf.addActionListener(new MyActionListener(this));
		add(tf);
	}
}
class MyActionListener implements ActionListener {
	Test tclass;
	MyActionListener(Test tclass) {
		this.tclass = tclass;
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == tclass.tf) {
			System.out.println("�f�[�^���� " + Integer.parseInt(tclass.tf.getText()));
		}
	}		
}

�X�N���[���o�[�̕t�����e�L�X�g�G���A�����FTextArea

�����s�̃e�L�X�g��\�����邽�߂� TextField �̑���� TextArea ���g���B�\���G���A���z�����ꍇ�ɃX�N���[���o�[��\�������邽�߂ɂ́AScroll �y�C�����g��Ȃ���΂����Ȃ��B

// �e�L�X�g�G���A
JTextArea ta = new JTextArea(10, 25); // 1�s25������10�s���̗̈���m��
// �X�N���[���y�C�����`�A�e�L�X�g�G���A��g�ݍ���
JScrollPane scroll = new JScrollPane(ta); add(scroll);

.

���ǂ�

�f�[�^���͗p�X���C�_�[�����FJSlider, Scrollbar

���l����͂���ہA�L�[�{�[�h�łȂ��A�A�i���O���ɓ��͂��铹��Ƃ��ăX���C�_�[������B���x���͂̂悤�ɁA�p�����[�^�̒l�����X�ɕς������Ȃǂ̏ꍇ�ɕ֗��ł���BJSlider �́ASwing �Œ񋟂����X���C�_�[�R���|�[�l���g�ł���BAWT �ł� Scrollbar ���g���B

JSlider �̊��荞�݃C�x���g�� ChangeListener ���������AChangeEvent ���������� stateChanged ���\�b�h���I�[�o�[���C�h���邱�Ƃŏ��������B

��FJSlider �̏�����

// �e�N���X�Ɏ���
class SliderTest extends JFrame implements ChangeListener {

// �X���C�_�[�̒�`
SliderTest() {
JSlider slider = new JSlider(0,1000); // �ŏ��l�A�ő�l slider.setPreferredSize(new Dimension(fsize.width-20, 70)); // �\���̈�w�� slider.addChangeListener(this); // ���荞�ݏ����p slider.setMajorTickSpacing(1000); // �e�B�b�N�}�[�N�̎w�� slider.setPaintTicks(true); // �����\�� slider.setPaintLabels(true); // �e�B�b�N�̐��l��\�� add(slider);

// �C�x���g�����F�X���C�_�[�̏�ԕω� public void stateChanged(ChangeEvent e) { ...
}

�e�B�b�N���x���Ɏ����l��\���������ꍇ�́A���x���p�̕\������đΏ�����K�v������B���̂��̗�ł���B

	double min, max;
Hashtable<Integer, JComponent> tab = new Hashtable<Integer, JComponent>(); tab.put(0, new JLabel(String.format("%.2f", min))); tab.put(500, new JLabel(String.format("%.2f", (min+max)/2))); tab.put(1000, new JLabel(String.format("%.2f", max))); // �X���C�_�[��` js = new JSlider(0, 1000);
...
js.setLabelTable(tab); // �ڐ��胉�x���̑Ή��\
js.setPaintLabels(true);

��i�X���C�_�[�̎g�p��j�@���́A�ŏ��l�ő�l�𓮓I�ɓ��͂ł���t�B�[���h��t�����X���C�_�[���p�l���ɑg�ݍ��񂾗�ł���B

class MySliderSubb extends JPanel implements ChangeListener {
	Dimension size = new Dimension(300, 65);
	JTextField fmin, fmax;
	JSlider js;
	MyJFrame mf;							// �Ăяo�����̃N���X
	
	MySliderSubb(String name, double min, double max, MyJFrame mf) {
		this.mf = mf;
		this.setPreferredSize(size);
		this.setBackground(Color.blue);
		this.setLayout(null);

// �ϐ��� JLabel jb = new JLabel(name); jb.setBounds(0, 5, 80, 25); jb.setHorizontalAlignment(JTextField.CENTER); add(jb); // �X���C�_�[��` js = new JSlider(0, 1000); js.setBounds(80, 5, size.width-85, 30); js.addChangeListener(this); // ���荞�ݏ����p js.setMajorTickSpacing(100); // �e�B�b�N�}�[�N�̎w�� js.setPaintTicks(true); // �����\�� add(js); // �ŏ��l�A�ő�l�̓��͗p�e�L�X�g�t�B�[���h��` fmin = new JTextField(""+min); fmin.setBounds(80, 40, 40, 20); fmin.setHorizontalAlignment(JTextField.CENTER); add(fmin); fmax = new JTextField(""+max); fmax.setBounds(255, 40, 40, 20); fmax.setHorizontalAlignment(JTextField.CENTER); add(fmax); } // �X���C�_�[���������Ƃ��̏����i�Ăяo�����ɒl��Ԃ��j public void stateChanged(ChangeEvent e) { double min = Double.parseDouble(fmin.getText()); double max = Double.parseDouble(fmax.getText()); double z = js.getValue() * 0.001 * (max-min) + min; mf.setSliderValue(z); } }

���́A���̃N���X�̃C���X�^���X���쐬�����Ƃ��̕\����ł���B

�@�@�@�@�@XC_

Slider  �̎g�p��F���́ASlider ���g���� RGB �l���w�肵�A�F���{��\��������v���O�����ł���B

public class AWTsampleSlider extends Applet implements ChangeListener {
	JSlider[] colorBar = new JSlider[5];
	TextField tf;
	// �����ݒ�
	public void init() {
		this.setSize(400, 400);
		this.setLayout(new FlowLayout());
		for(int i=0; i<3; i++) {
			colorBar[i] = new JSlider(0, 255);
			colorBar[i].addChangeListener(this);
			colorBar[i].setPreferredSize(new Dimension(this.getWidth()-40, 70));
			colorBar[i].setMajorTickSpacing(128);
			colorBar[i].setPaintTicks(true);
			colorBar[i].setPaintLabels(true);
			add(colorBar[i]);
		}
		tf = new TextField("RGB", 20);
		add(tf);
	}		
	// �X���C�_�[�̊��荞�ݏ���
	public void stateChanged(ChangeEvent e) {
		setBackground(new Color(colorBar[0].getValue(),
			colorBar[1].getValue(), colorBar[2].getValue()));
		tf.setText("R,G,B = " + colorBar[0].getValue() + ", " + 
			colorBar[1].getValue() + ", " + colorBar[2].getValue());
	}
}

�v���O�����̐���

���͎��s��̉�ʂł���B

�@�@�@�@�@slider

.Slider �Ɠ����悤�ȋ@�\������ Scrollbar �������悤�Ɏg����BScrollbar �̊��荞�݃C�x���g�� AdjustmentListener ���������AChangeEvent ���������� stateChanged ���\�b�h���I�[�o�[���C�h���邱�Ƃŏ��������B

��FScrollbar �̏�����

// �e�N���X�Ɏ���
class ... implements AdjustmentListener
// �X�N���[���o�[�̒�`
Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL, 128, 10, 0, 255); sb.addAdjustmentListener(this); sb.setBounds(20,50+30*i,200,20); add(sb);

 // �C�x���g�����F�X�N���[���o�[�̏�ԕω� public void stateChanged(ChangeEvent e) { ...
}

.

���ǂ�

�|�b�v�A�b�v���j���[

�{�^�����E�N���b�N����ƃ��j���[���\������āA��‚̃��j���[���ڂ�I�ׂ�悤�ɂȂ�A�Ƃ����d�|������������̂� JPopupMenu �ł���B���́A�{�^�����N���b�N����ƃ|�b�v�A�b�v���j���[���\������A���ꂼ��̊��荞�ݏ������s���悤�ɐݒ肳�ꂽ�v���O�����̗�i�����j�ł���B

class MyJFrame extends JFrame {
JPopupMenu popm; // �R���X�g���N�^�Œ�`
MyJFrame() {
JButton btn = new JButton("�E�N���b�N"); btn.addMouseListener(new MyMouseAdapter(this)); add(btn); // �{�^���̒lj�
popm = new JPopupMenu(); JMenuItem menuA = new JMenuItem("menuA"); // 3�s�����j���[�̌������J��Ԃ� menuA.addActionListener(this); popm.add(menuA); JMenuItem menuB = new JMenuItem("menuB"); menuB.addActionListener(this); popm.add(menuB); } // ���荞�ݏ���
public void actionPerformed(ActionEvent e) { if(e.getActionCommand() == "menuA") { System.out.println("menuA ���I������܂���"); } if(e.getActionCommand() == "menuB") { System.out.println("menuB ���I������܂���"); } }
// �{�^���N���b�N���̊��荞�ݏ����i�|�b�v�A�b�v���j���[�\���j
class MyMouseAdapter extends MouseAdapter { MyJFrame mf; // �Ăяo�����̃N���X MyMouseAdapter(MyJFrame mf) { this.mf = mf; } public void mouseReleased(MouseEvent e) { if(e.isPopupTrigger()) { mf.popm.show(e.getComponent(), e.getX(), e.getY()); } // �N���b�N���ꂽ�ʒu�Ƀ|�b�v�A�b�v���j���[�\�� } }



�e���v���[�g

����p�l���̗�

�{�^����e�L�X�g�t�B�[���h�Ȃǂ���‚̃t���[���i�p�l���j�ɂ܂Ƃ߁A���j�^�[�p����ՂƂ��Ă���B�O���t�B�b�N�X�\���p�Ƃ��āA�ʂ̃t���[�����`���邱�Ƃ�z�肵�Ă���B

public class ControlPanelPlus extends Frame { // Frame �̏ꍇ

	Dimension fSize = new Dimension(800, 600);			// �t���[���T�C�Y
	Dimension pSize = new Dimension(fSize.width - fSize.height - 10,
			fSize.height - 60);				// �R���g���[���p�l���T�C�Y
	Dimension gSize = new Dimension(pSize.height, pSize.height);	// �O���t�p�l���T�C�Y
	Point pORG = new Point(20, 35); 	// 	// �R���g���[���p�l��������W�iFrame �̏ꍇ�j
	// Point pORG = new Point(10,10); 	// �R���g���[���p�l��������W�iJFrame �̏ꍇ�j
	Point gORG = new Point(pORG.x + pSize.width + 20, pORG.y);	// �O���t�p�l������ʒu���W

	ControlPanelPlus(String title) {
		...
this.setLayout(null); GraphicCanvas grfCanvas = new GraphicCanvas(gORG, gSize); this.add(grfCanvas); this.add(new ControlPanelSub(grfCanvas, pORG, pSize)); } }
// �R���g���[���p�l�� class ControlPanelSub extends JPanel implements ActionListener { GraphicCanvas gCanvas; Dimension size; JButton[] bt = new JButton[10]; // �{�^���z�� int Nbuttons = 7; // �{�^���̌� int bHeight = 35; // �{�^���̍��� String[] bname = { "drawCircle", "button2", "button3", "button4", "button5", "button6", "button7" }; JTextField[] tf = new JTextField[10]; // �e�L�X�g�t�B�[���h�z�� int Nfields = 4; // �e�L�X�g�t�B�[���h�̌� int fHeight = 30; // �e�L�X�g�t�B�[���h�̍��� String[] tvalue = { "100", "0", "0", "0" }; String[] lname = { "radius", "param2", "param3", "param4" }; JTextArea ta; ControlPanelSub(GraphicCanvas gCanvas, Point p, Dimension size) { this.gCanvas = gCanvas; this.setBounds(p.x, p.y, size.width, size.height);; this.size = size; this.setLayout(null); // �{�^���p�p�l���̒�` JPanel btnPanel = new JPanel(); btnPanel.setBounds(0, 0, size.width, (Nbuttons + 1) / 2 * bHeight); btnPanel.setLayout(new GridLayout((Nbuttons + 1) / 2, 2)); // �{�^���̒�` for (int i = 0; i < Nbuttons; i++) { bt[i] = new JButton(bname[i]); bt[i].addActionListener(this); // ���荞�ݏ����p btnPanel.add(bt[i]); } add(btnPanel); // �e�L�X�g�t�B�[���h�p�p�l���̒�` JPanel txtPanel = new JPanel(); txtPanel.setBounds(0, btnPanel.getHeight() + 10, size.width, Nfields * fHeight); txtPanel.setLayout(new GridLayout(Nfields, 2)); // �e�L�X�g�t�B�[���h�{���x���̒�` for (int i = 0; i < Nfields; i++) { txtPanel.add(new JLabel(lname[i], JLabel.CENTER)); tf[i] = new JTextField(tvalue[i]); tf[i].setHorizontalAlignment(JTextField.CENTER); // �������� tf[i].addActionListener(this); // ���荞�ݏ����p txtPanel.add(tf[i]); } add(txtPanel); // ���\���p�Ƃ��āA�e�L�X�g�G���A�������ɐݒu int ht = size.height - btnPanel.getHeight() - txtPanel.getHeight() - 20; ta = new JTextArea((ht - 30) / 16, 23); ta.setText("���ʕ\���p�G���A�F\n"); JScrollPane scroll = new JScrollPane(ta); scroll.setBounds(0, size.height - ht, size.width, ht); add(scroll); } // ���荞�ݏ��� public void actionPerformed(ActionEvent e) { ta.append(e.getActionCommand() + " ���N���b�N����܂���\n"); // �`�� if (e.getActionCommand() == "drawCircle") { gCanvas.drawCircle(Integer.parseInt(tf[0].getText())); } } }

���ʂ͎��̒ʂ�B

�@�@

���ǂ�

�`���p�L�����o�X�̗�

�O���t�B�b�N�X�p�� Panel �Ƃ��� Canvas ������B�}�E�X�̃C�x���g���󂯕t���郊�X�i�[����������B����‚���}���邽�߂ɁA�`��́A�C���[�W�t�@�C�����g���A�_�u���o�b�t�@�����O�ōX�V����B���ۂ̕`��́A���̒��Ƀ��\�b�h�Ƃ��ď������ށB�t���[��������āA���� GraphicBoard �̃C���X�^���X��\��t����΂悢�B

public class ScrollScreen extends Frame {
...
ScrollScreen(String title) { ...
this.setLayout(null); this.add(new GraphicBoard2(15,35,dim.width-30,dim.height-50)); } } class GraphicBoard2 extends Canvas { Image img = null; Graphics g; Dimension dim; Point prev, now = new Point(0,0); GraphicBoard2(int x, int y, int width, int height) { this.setBounds(x, y, width, height); this.addMouseListener(new MyMouseAdapter()); this.addMouseMotionListener(new MyMouseMotionAdapter()); this.addMouseWheelListener(new MyMouseWheelListener()); } // �O���t�B�b�N�X public void paint(Graphics gr) { super.paint(gr); if (img == null) { dim = this.getSize(); img = this.createImage(dim.width, dim.height); g = img.getGraphics(); } gr.drawImage(img, 0, 0, this); // �C���[�W��`������ } // ����‚��h�~ public void update(Graphics g) { paint(g); } // �}�E�X�N���b�N���̊��荞�ݏ����F�N���b�N���ꂽ�_�Ɂu�{�v�\�� class MyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent me) { now = me.getPoint(); g.drawLine(now.x-5, now.y, now.x+5, now.y); g.drawLine(now.x, now.y-5, now.x, now.y+5); repaint(); } } // �}�E�X�h���b�O���̊��荞�ݏ����F�h���b�O�ɍ��킹�ċO�Ղ�`�� class MyMouseMotionAdapter extends MouseMotionAdapter { public void mouseDragged(MouseEvent me) { prev = now; now = me.getPoint(); if(Math.abs(now.x-prev.x) + Math.abs(now.y-prev.y) < 20) g.drawLine(prev.x, prev.y, now.x, now.y); repaint(); } } // �}�E�X�z�C�[����]���̊��荞�ݏ����F�X�N���[�����X�N���[������ 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, 1); g.clearRect(0, 0, dim.width, 1); } repaint(); } } }


���ǂ�