java swing自定义控件_自定义Java Swing Meter控件

我正在尝试制作一个自动摇摆控制器,这是一个米.

Swing Meter http://dl.dropbox.com/u/2363305/Programming/Java/swing_meter.gif

箭头会上下移动.这是我目前的代码,但我觉得我做错了.

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.LinearGradientPaint;

import java.awt.Polygon;

import java.awt.Stroke;

import java.awt.geom.Point2D;

import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class meter extends JFrame {

Stroke drawingStroke = new BasicStroke(2);

Rectangle2D rect = new Rectangle2D.Double(105, 50, 40, 200);

Double meterPercent = new Double(0.57);

public meter() {

setTitle("Meter");

setLayout(null);

setSize(300, 300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setVisible(true);

}

public void paint(Graphics g) {

// Paint Meter

Graphics2D g1 = (Graphics2D) g;

g1.setStroke(drawingStroke);

g1.draw(rect);

// Set Meter Colors

Point2D start = new Point2D.Float(0, 0);

Point2D end = new Point2D.Float(0, this.getHeight());

float[] dist = { 0.1f, 0.5f, 0.9f };

Color[] colors = { Color.green, Color.yellow, Color.red };

LinearGradientPaint p = new LinearGradientPaint(start, end, dist,

colors);

g1.setPaint(p);

g1.fill(rect);

// Make a triangle - Arrow on Meter

int[] x = new int[3];

int[] y = new int[3];

int n; // count of points

// Set Points for Arrow

Integer meterArrowHypotenuse = (int) rect.getX();

Integer meterArrowTip = (int) rect.getY()

+ (int) (rect.getHeight() * (1 - meterPercent));

x[0] = meterArrowHypotenuse - 25;

x[1] = meterArrowHypotenuse - 25;

x[2] = meterArrowHypotenuse - 5;

y[0] = meterArrowTip - 20; // Top Left

y[1] = meterArrowTip + 20; // Bottom Left

y[2] = meterArrowTip; // Tip of Arrow

n = 3; // Number of points, 3 because its a triangle

// Draw Arrow Border

Polygon myTriShadow = new Polygon(x, y, n); // a triangle

g1.setPaint(Color.black);

g1.fill(myTriShadow);

// Set Points for Arrow Board

x[0] = x[0] + 1;

x[1] = x[1] + 1;

x[2] = x[2] - 2;

y[0] = y[0] + 3;

y[1] = y[1] - 3;

y[2] = y[2];

Robot robot = new Robot();

Color colorMeter = robot.getPixelColor(x[2]+10, y[2]);

// Draw Arrow

Polygon myTri = new Polygon(x, y, n); // a triangle

Color colr = new Color(colorMeter.getRed(), colorMeter.getGreen(), colorMeter.getBlue());

g1.setPaint(colr);

g1.fill(myTri);

}

public static void main(String[] args) {

new meter();

}

}

谢谢你的期待.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值