//Sample26
import java.applet.Applet;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class Sample26 extends Applet implements MouseListener,
MouseMotionListener {
private static final long serialVersionUID = 845631145360088170L;
private static final int origin_X = 100;
private static final int origin_Y = 300;
private static final int rect_pitch = 40;
private static final int rect_width = 10;
private static final String tf_init_value = "100";
private static final int tf_size = 3;
private static final int eps = 3;
private static final String window_title = "棒グラフをドラッグして値変更";
private static final int window_width = 340;
private static final int window_height = 400;
TextField[] tf = new TextField[2];
static int x1 = 103;
static int y1 = 198;
static int x2 = 143;
static int y2 = 198;
static int sw = 0;
// 初期処理
@Override
public void init() {
this.setSize(Sample26.window_width, Sample26.window_height);
this.add(new Label(Sample26.window_title));
this.setLayout(new FlowLayout());
for (int i = 0; i < this.tf.length; i++) {
this.tf[i] = new TextField(Sample26.tf_init_value, Sample26.tf_size);
this.add(this.tf[i]);
}
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
// 描画
@Override
public void paint(final Graphics g) {
int rect_height;
final int r = 2;
g
.clearRect(0, 0, Sample26.window_width - 1,
Sample26.window_height - 1);
for (int i = 0; i < this.tf.length; i++) {
String rs = this.tf[i].getText();
if (rs != null) {
try {
rect_height = Integer.parseInt(rs);
g.setColor(Color.blue);
g.fillRect(Sample26.origin_X + i * Sample26.rect_pitch,
Sample26.origin_Y - rect_height,
Sample26.rect_width, rect_height);
g.setColor(Color.red);
g.fillOval(Sample26.origin_X + 5 + i * Sample26.rect_pitch
- r, Sample26.origin_Y - rect_height - r, 2 * r,
2 * r);
if (i == 0) {
Sample26.y1 = Sample26.origin_Y - rect_height - r;
}
if (i == 1) {
Sample26.y2 = Sample26.origin_Y - rect_height - r;
}
} catch (final NumberFormatException e) {
}
}
}
}
// マウスイベント
public void mousePressed(final MouseEvent me) {
Sample26.sw = 0;
final int x = me.getX();
final int y = me.getY();
if ((Math.abs(Sample26.x1 - x) < Sample26.eps)
&& (Math.abs(Sample26.y1 - y) < Sample26.eps)) {
Sample26.sw = 1;
}
if ((Math.abs(Sample26.x2 - x) < Sample26.eps)
&& (Math.abs(Sample26.y2 - y) < Sample26.eps)) {
Sample26.sw = 2;
}
}
public void mouseDragged(final MouseEvent me) {
if (Sample26.sw > 0) {
final int y = me.getY();
this.tf[Sample26.sw - 1].setText("" + (Sample26.origin_Y - 2 - y));
this.repaint();
}
}
public void mouseReleased(final MouseEvent me) {
}
public void mouseMoved(final MouseEvent me) {
}
public void mouseEntered(final MouseEvent me) {
}
public void mouseExited(final MouseEvent me) {
}
public void mouseClicked(final MouseEvent me) {
}
}