package awa.imu; import java.awt.Color; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; import javax.swing.*; public class IndicatorField extends JTextField { private static final double MAX_ABS = 2.0; private static final DecimalFormatSymbols usfs = new DecimalFormatSymbols(Locale.US); private static final NumberFormat msFormat = new DecimalFormat(" 0.000;-0.000", usfs); private double dvalue = 0.0; public IndicatorField() { //setFont(getFont().deriveFont(10f)); } public void setDoubleValue(double val) { dvalue = val; repaint(); } public void paintComponent(java.awt.Graphics g) { int xMax = getWidth(); int yMax = getHeight(); int w2 = xMax/2; double ra = (dvalue / MAX_ABS); int xd = (int) (w2 * ra); g.setColor(getBackground()); g.fillRect(0,0,xMax,yMax); g.setColor(Color.GREEN); if (Math.abs(dvalue) > 0.8) g.setColor(Color.YELLOW); if (Math.abs(dvalue) > 1.6) g.setColor(Color.RED); if (dvalue > 0.0) { g.fillRect(w2, 0, xd, yMax); } else { g.fillRect(w2+xd, 0, -xd, yMax); } g.setColor(Color.BLACK); g.drawString(msFormat.format(dvalue), 3, yMax-3); } }