zoukankan      html  css  js  c++  java
  • 记账本,C,Github,util

    package util;
    
    import java.awt.Component;
    import java.awt.Dimension;
    
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.UnsupportedLookAndFeelException;
    
    import gui.panel.WorkingPanel;
    
    /**
     * 居中面板
     * 
     * @author 于修彦
     *
     */
    public class CenterPanel extends JPanel {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private double rate; // 比例
        private JComponent c; // 面板上将要居中的组件
        private boolean stretch;// 是否缩放
    
        public CenterPanel(double rate, boolean stretch) {
            this.setLayout(null);
            this.rate = rate;
            this.stretch = stretch;
        }
    
        public CenterPanel(double rate) {
            this(rate, true);
        }
    
        /**
         * 重写重绘方法,在面板居中显示组件
         */
        public void repaint() {
            if (this.c != null) {
                Dimension containerSize = this.getSize();// 面板大小
                Dimension componentSize = this.c.getPreferredSize();// 获取组件调整之后的大小
    
                if (this.stretch) {
                    // 设置这个组件大小
                    this.c.setSize((int) (containerSize.width * this.rate), (int) (containerSize.height * this.rate));
                } else {
                    this.c.setSize(componentSize);// 保持原来大小不变
                }
                // 将组件放到居中位置
                this.c.setLocation(containerSize.width / 2 - this.c.getWidth() / 2,
                        containerSize.height / 2 - this.c.getHeight() / 2);
    
            }
            super.repaint();
        }
    
        /**
         * 显示组件
         * 
         * @param p
         *            组件
         */
        public void show(JComponent p) {
            this.c = p;
            Component[] cs = this.getComponents();
            Component[] arrayOfComponent1;
            int j = (arrayOfComponent1 = cs).length;
            for (int i = 0; i < j; i++) { // 清除面板上原来的组件
                Component c = arrayOfComponent1[i];
                remove(c);
            }
            add(p);
    
            if ((p instanceof WorkingPanel)) {
                ((WorkingPanel) p).updateData();
            }
            updateUI();
        }
    }

    util1

    package util;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Image;
    import java.util.List;
    
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    import com.objectplanet.chart.BarChart;
    import com.objectplanet.chart.Chart;
    
    import entity.Record;
    
    /**
     * 生成柱状图
     * 
     * @author 于修彦
     *
     */
    public class ChartUtil {
        /**
         * 横轴下面的文字
         * 
         * @param rs
         *            数据集
         * @return 依据数据集生成的文字数组
         */
        private static String[] sampleLabels(List<Record> rs) {
            String[] sampleLabels = new String[rs.size()];
            for (int i = 0; i < sampleLabels.length; i++) {
                if (0 == i % 5)
                    sampleLabels[i] = String.valueOf(i + 1 + "日");
            }
    
            return sampleLabels;
    
        }
    
        /**
         * 柱状图的柱的数据高度
         * 
         * @param rs
         *            数据集
         * @return 依据数据集生成的数据数组
         */
        public static double[] sampleValues(List<Record> rs) {
            double[] sampleValues = new double[rs.size()];
            for (int i = 0; i < sampleValues.length; i++) {
                sampleValues[i] = rs.get(i).getSpend();
            }
    
            return sampleValues;
        }
    
        /**
         * 获取柱状图的图片
         * 
         * @param rs
         *            数据集
         * @param width
         *            宽度
         * @param height
         *            高度
         * @return 结果图
         */
        public static Image getImage(List<Record> rs, int width, int height) {
            // 根据消费记录得到的样本数据
            double[] sampleValues = sampleValues(rs);
            // 根据消费记录得到的下方日期文本
            String[] sampleLabels = sampleLabels(rs);
            // 样本中的最大值
            int max = max(sampleValues);
    
            // 数据颜色
            Color[] sampleColors = new Color[] { ColorUtil.blueColor };
    
            // 柱状图
            BarChart chart = new BarChart();
    
            // 设置样本个数
            chart.setSampleCount(sampleValues.length);
            // 设置样本数据
            chart.setSampleValues(0, sampleValues);
            // 设置文字
            chart.setSampleLabels(sampleLabels);
            // 设置样本颜色
            chart.setSampleColors(sampleColors);
            // 设置取值范围
            chart.setRange(0, max * 1.2);
            // 显示背景横线
            chart.setValueLinesOn(true);
            // 显示文字
            chart.setSampleLabelsOn(true);
            // 把文字显示在下方
            chart.setSampleLabelStyle(Chart.BELOW);
    
            // 样本值的字体
            chart.setFont("rangeLabelFont", new Font("Arial", Font.BOLD, 12));
            // 显示图例说明
            chart.setLegendOn(true);
            // 把图例说明放在左侧
            chart.setLegendPosition(Chart.LEFT);
            // 图例说明中的文字
            chart.setLegendLabels(new String[] { "月消费报表" });
            // 图例说明的字体
            chart.setFont("legendFont", new Font("Dialog", Font.BOLD, 13));
            // 下方文字的字体
            chart.setFont("sampleLabelFont", new Font("Dialog", Font.BOLD, 13));
            // 图表中间背景颜色
            chart.setChartBackground(Color.white);
            // 图表整体背景颜色
            chart.setBackground(ColorUtil.backgroundColor);
            // 把图表转换为Image类型
            Image im = chart.getImage(width, height);
            return im;
        }
    
        public static int max(double[] sampleValues) {
            int max = 0;
            for (double v : sampleValues) {
                if (v > max)
                    max = (int) v;
            }
            return max;
    
        }
    
        private static String[] sampleLabels() {
            String[] sampleLabels = new String[30];
    
            for (int i = 0; i < sampleLabels.length; i++) {
                if (0 == i % 5)
                    sampleLabels[i] = String.valueOf(i + 1 + "日");
            }
            return sampleLabels;
        }
    
        public static Image getImage(int width, int height) {
            // 模拟样本数据
            double[] sampleValues = sampleValues();
            // 下方显示的文字
            String[] sampleLabels = sampleLabels();
            // 样本中的最大值
            int max = max(sampleValues);
    
            // 数据颜色
            Color[] sampleColors = new Color[] { ColorUtil.blueColor };
    
            // 柱状图
            BarChart chart = new BarChart();
    
            // 设置样本个数
            chart.setSampleCount(sampleValues.length);
            // 设置样本数据
            chart.setSampleValues(0, sampleValues);
            // 设置文字
            chart.setSampleLabels(sampleLabels);
            // 设置样本颜色
            chart.setSampleColors(sampleColors);
            // 设置取值范围
            chart.setRange(0, max * 1.2);
            // 显示背景横线
            chart.setValueLinesOn(true);
            // 显示文字
            chart.setSampleLabelsOn(true);
            // 把文字显示在下方
            chart.setSampleLabelStyle(Chart.BELOW);
    
            // 样本值的字体
            chart.setFont("rangeLabelFont", new Font("Arial", Font.BOLD, 12));
            // 显示图例说明
            chart.setLegendOn(true);
            // 把图例说明放在左侧
            chart.setLegendPosition(Chart.LEFT);
            // 图例说明中的文字
            chart.setLegendLabels(new String[] { "月消费报表" });
            // 图例说明的字体
            chart.setFont("legendFont", new Font("Dialog", Font.BOLD, 13));
            // 下方文字的字体
            chart.setFont("sampleLabelFont", new Font("Dialog", Font.BOLD, 13));
            // 图表中间背景颜色
            chart.setChartBackground(Color.white);
            // 图表整体背景颜色
            chart.setBackground(ColorUtil.backgroundColor);
            // 把图表转换为Image类型
            Image im = chart.getImage(width, height);
            return im;
        }
    
        private static double[] sampleValues() {
    
            double[] result = new double[30];
            for (int i = 0; i < result.length; i++) {
                result[i] = (int) (Math.random() * 300);
            }
            return result;
    
        }
    
        // public static void main(String[] args) {
        // JPanel p = new JPanel();
        // JLabel l = new JLabel();
        // Image img = ChartUtil.getImage(400, 300);
        // Icon icon = new ImageIcon(img);
        // l.setIcon(icon);
        // p.add(l);
        // GUIUtil.showPanel(p);
        // }
    
    }

    util2

    package util;
    
    import java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.RenderingHints;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import javax.swing.SwingWorker;
    
    public class CircleProgressBar extends JPanel {
    
        private int minimumProgress;
    
        private int maximumProgress;
    
        private int progress;
    
        private String progressText;
    
        private Color backgroundColor;
    
        private Color foregroundColor;
    
        public CircleProgressBar() {
            minimumProgress = 0;
            maximumProgress = 100;
            progressText = "0%";
        }
    
        public void paint(Graphics g) {
            super.paint(g);
            Graphics2D graphics2d = (Graphics2D) g;
            // 开启抗锯齿
            graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            int x = 0;
            int y = 0;
            int width = 0;
            int height = 0;
            int fontSize = 0;
            if (getWidth() >= getHeight()) {
                x = (getWidth() - getHeight()) / 2 + 25;
                y = 25;
                width = getHeight() - 50;
                height = getHeight() - 50;
                fontSize = getWidth() / 8;
            } else {
                x = 25;
                y = (getHeight() - getWidth()) / 2 + 25;
                width = getWidth() - 50;
                height = getWidth() - 50;
                fontSize = getHeight() / 8;
            }
            graphics2d.setStroke(new BasicStroke(20.0f));
            graphics2d.setColor(backgroundColor);
            graphics2d.drawArc(x, y, width, height, 0, 360);
            graphics2d.setColor(foregroundColor);
            graphics2d.drawArc(x, y, width, height, 90,
                    -(int) (360 * ((progress * 1.0) / (maximumProgress - minimumProgress))));
            graphics2d.setFont(new Font("黑体", Font.BOLD, fontSize));
            FontMetrics fontMetrics = graphics2d.getFontMetrics();
            int digitalWidth = fontMetrics.stringWidth(progressText);
            int digitalAscent = fontMetrics.getAscent();
            graphics2d.setColor(foregroundColor);
            graphics2d.drawString(progressText, getWidth() / 2 - digitalWidth / 2, getHeight() / 2 + digitalAscent / 2);
        }
    
        public int getProgress() {
            return progress;
        }
    
        public void setProgress(int progress) {
            if (progress >= minimumProgress && progress <= maximumProgress)
                this.progress = progress;
            if (progress > maximumProgress)
                this.progress = maximumProgress;
    
            this.progressText = String.valueOf(progress + "%");
    
            this.repaint();
        }
    
        public Color getBackgroundColor() {
            return backgroundColor;
        }
    
        public void setBackgroundColor(Color backgroundColor) {
            this.backgroundColor = backgroundColor;
            this.repaint();
        }
    
        public Color getForegroundColor() {
            return foregroundColor;
        }
    
        public void setForegroundColor(Color foregroundColor) {
            this.foregroundColor = foregroundColor;
            this.repaint();
        }
    
    }

    util3

  • 相关阅读:
    在String中添加移动构造函数和移动赋值运算符
    自定义String类,并且实现在STL容器中添加自定义的类型
    allocator例子
    Messages的例子
    java unicode转中文
    Oracle Unicode转中文(解码)
    dom4j解析XML
    如何下载HLS视频到本地(m3u8)
    background-position
    XMPP协议实现即时通讯底层书写 (二)-- IOS XMPPFramework Demo+分析
  • 原文地址:https://www.cnblogs.com/kmxbf2292/p/10425971.html
Copyright © 2011-2022 走看看