thermometerrenderer.java

来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 66 行

JAVA
66
字号
/* * This source code is part of TWaver 1.3.1 * * SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * Copyright 2000-2005 SERVA Software, Inc. All rights reserved. */package demo.network.customui;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;

public class ThermometerRenderer extends JComponent implements TableCellRenderer {

    protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
    protected static Border focusBorder = UIManager.getBorder("Table.focusCellHighlightBorder");

    private boolean hasFocus;
    private Integer value;

    public ThermometerRenderer() {
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (hasFocus) {
            this.setBorder(focusBorder);
        } else {
            this.setBorder(noFocusBorder);
        }
        Dimension size = this.getSize();
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, size.width, size.height);

        if (value != null) {
            g.setColor(Color.GREEN);
            double r = (size.height - 4) / 2.0;
            int centerX = (int) (size.width * (20 - value.intValue()) / 20.0);
            int centerY = (int) r;
            ( (Graphics2D) g).fill(new Ellipse2D.Double(centerX - r, centerY - r + 2, r * 2, r * 2));
        }
    }

    public Component getTableCellRendererComponent(JTable table,
        Object value,
        boolean isSelected,
        boolean hasFocus,
        int row,
        int column) {
        this.hasFocus = hasFocus;
        this.value = (Integer) value;
        this.setToolTipText(value + "");
        return this;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?