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

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();

}

}

谢谢你的期待.

解决方法:

附录:在反思中,它看起来有点吓人,但你可以扩展BasicSliderUI并在paintThumb()和paintTrack()中重用你的一些代码.

JSlider slider = new JSlider();

slider.setUI(new MySliderUI(slider));

...

private static class MySliderUI extends BasicSliderUI {

public MySliderUI(JSlider b) {

super(b);

}

@Override

public void paintTrack(Graphics g) {

Graphics2D g2d = (Graphics2D) g;

Rectangle r = trackRect;

g2d.setPaint(new GradientPaint(

r.x, r.y, Color.red, r.x + r.width, r.y + r.height, Color.blue));

g.fillRect(r.x, r.y, r.width, r.height);

}

@Override

public void paintThumb(Graphics g) {

super.paintThumb(g); // replace with your fill()

}

}

标签:java,swing,controls

来源: https://codeday.me/bug/20191008/1874723.html

java meter_自定义Java Swing Meter控件相关推荐

  1. java 显示日历 swing_Java Swing 日历 控件

    /*** * Copyright: Ares. * All Rights Reserved. * Company: Insigma HT/上海创图 *@authorAres private stati ...

  2. java多文件上传plupload控件实现多图片上传(二)

    接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...

  3. android自定义view流布局,Android控件进阶-自定义流式布局和热门标签控件

    一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧 类似的自定义换行流式布局控件.下 ...

  4. 自定义窗体设计器-控件测试

    自定义窗体设计器-控件测试 基于.net2的自定义窗体设计器控件(类似visual studio的vb,c#设计器,其实就是vs2005的设计器) 控件由四部分组成:工具栏,工具箱,绘图设计区,属性框 ...

  5. HTML5 progress和meter控件

    HTML5 progress和meter控件 在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等 ...

  6. asp.net读取用户控件,自定义加载用户控件

    1.自定义加载用户控件 ceshi.aspx页面 <html><body> <div id="divControls" runat="ser ...

  7. HTML meter控件

    meter控件 meter控件用来表示已知范围,且可度量的等级标量或分数值,如考试成绩等. <meter value="85" min="0" max=& ...

  8. trackbar控件显示刻度值_安卓自定义电平流图形控件

    引言 在无线电监测方面,需要对信号进行展示,其中一项数据就是设备返回的电平数据,需要对其实时展示,一图胜千言,最好且最直观的方式就是图表展示,这样对其信号强弱的变化,就可以一目了然. 本文主要讲安卓版 ...

  9. 在vb中实现真正锁定的带自定义菜单的文本控件

    在vb中实现真正锁定的带自定义菜单的文本控件 /// ///这个东西的出台,是由于一个网友的帖子,太气人,我才写的,很匆忙,又什么问题,请指出!谢谢 //QQ:9181729/mail:shawfil ...

最新文章

  1. C 语言编程 — Makefile
  2. 【错误记录】Visual Studio 中配置 NDK 头文件路径
  3. 200 ssl服务器证书无效_ssl证书无效怎么办?
  4. python把数据写入excel_Python读写sqlite3数据库的方法并且将数据写入Excel的实例详解...
  5. IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (中篇)-js-ipfs-api - 图片上传到IPFS以及下载
  6. java中的 请求体_在spring mvc test中访问请求体和请求头
  7. 作业帮电脑版在线使用_作业帮:创新科技驱动在线教育新模式
  8. java 二维数组 floyd_Floyd算法(一)之 C语言详解
  9. Splunk企业级运维智能大数据分析平台新手入门视频课程上线
  10. 【机器学习实验】scikit-learn的主要模块和基本使用
  11. 【MATLAB深度学习工具箱】学习笔记--螃蟹公母分类Crab Classification
  12. n986原生android,【极光ROM】-【三星NOTE20U(国行/港版/台版/韩版/美版) N986X-高通865P】-【V4.0 Android-R-UA3】...
  13. 关于4442卡的读密码问题
  14. Android USB通信开发总结和热敏打印机开发实例解析
  15. 涉密计算机设备保密管理系统,保密室设备——涉密计算机及移动存储介质保密管理系统(三合一)...
  16. 计算机cpu架构是什么意思,「电脑小白必备」一分钟快速了解CPU
  17. 债券价格和到期收益率的关系_什么是到期收益率 到期收益率与债券价格的关系...
  18. CSS:CSS的外联样式
  19. 常用算法:问题求解与优化
  20. WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)

热门文章

  1. chrome-linux/chrome: error while loading shared libraries: libnss3.so解决方法
  2. 014 Rust死灵书之显式类型转换
  3. zabbix搭建详细全过程,以及遇到的问题
  4. Windows个人电脑的自我防护(包括nmap的扫描端口和cmd的跃点追踪)
  5. BSCI标准审核纲要 建议收藏
  6. 千姿百态项目经理1——“苦逼”项目经理一
  7. 什么是股指期货做空(股票期货做空是什么意思)
  8. 刷脸支付的初衷所在是科技让生活更简单
  9. 编程题目分类(剪辑)
  10. 【逆向分析】星际争霸1998 - 绕过密码验证