Java Swing 以饼图形式显示进度

2023-12-03

我想以饼图格式显示进度。有人可以帮忙吗? 我有数据要显示,但如何以这种格式显示它。当我们下载文件时,Google Chrome 中会显示进度。

image


根据@trashgod 提供的链接,这里是实现“馅饼”效果的一种方法。这仅处理不确定的进度条,但添加“确定”行为将非常容易。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.plaf.basic.BasicProgressBarUI;

/** @see http://stackoverflow.com/questions/8884297 */
public class ProgressBarUITest extends JPanel {

    public ProgressBarUITest() {
        super(new BorderLayout());
        JProgressBar jpb = new JProgressBar();
        jpb.setUI(new MyProgressUI());
        jpb.setForeground(Color.GRAY);
        jpb.setIndeterminate(true);
        this.add(jpb);
    }

    private static class MyProgressUI extends BasicProgressBarUI {

        private static final int ARC_EXTENT = 25;

        @Override
        protected void installDefaults() {
            super.installDefaults();
            progressBar.setBorder(null);
        }

        @Override
        protected void paintIndeterminate(Graphics g, JComponent c) {
            int angle = (int) (90 - 360.0 * getAnimationIndex() / getFrameCount());
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setColor(progressBar.getForeground());
            int size = Math.min(c.getWidth(), c.getHeight());
            g2d.fillArc((c.getWidth() - size) / 2, (c.getHeight() - size) / 2, size, size, angle - ARC_EXTENT, ARC_EXTENT);
        }

        @Override
        protected Rectangle getBox(Rectangle r) {
            if (r != null) {
                r.setBounds(progressBar.getBounds());
                return r;
            }
            return progressBar.getBounds();
        }

        @Override
        public Dimension getPreferredSize(JComponent c) {
            return new Dimension(100, 100);
        }
    }

    private void display() {
        JFrame f = new JFrame("ProgressBarUITest");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ProgressBarUITest().display();
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing 以饼图形式显示进度 的相关文章

随机推荐

  • PLS-00306:调用“OUTPUT_ARRAY”时参数的数量或类型错误

    我被这个错误困住了 真的不知道如何修复它 也许我以不正确的方式传递数组 这是主要的 sql 文件 DECLARE v array length NUMBER v array length BEGIN DECLARE TYPE number
  • 在 wpf 中绘图时对线条进行动画处理

    XAML
  • 通过依赖注入模拟 C++ 类

    假设你正在测试课程A它有一个依赖注入 of B其中有一个依赖注入C 所以你嘲笑B但它唯一的构造函数需要注入C 所以你必须嘲笑C以及注入模拟的C进入被嘲笑的地方B然后才将其注入A 如果有 5 个连续的依赖关系怎么办 有哪些替代方案 I use
  • 完美的角色无限旋转

    我正在尝试使用这个角色 代替加载旋转器 这是我到目前为止所得到的 spinner after animation rotating 2s linear infinite content font size 60px display inli
  • 将数字添加到子图

    我是 matplotlib 的新手 正在尝试了解如何将数字添加到子图中 我有三个不同的函数 它们输出一个数字 def plot fig 1 vars args f ax put subplots do something ax plot x
  • 在数组中查找模式的最有效方法?

    最近我尝试使用C来查找一组数字中的众数 当集合很小时 我的代码可以做得很好 这是我的代码 int frequency 10001 This array stores the frequency of a number that betwee
  • 使用灯具加载数据时是否会调用模型 save() 方法?

    我试图在模型为空时从另一个字段自动生成一个模型 这是代码 class Position RichText name models CharField max length 200 slug models SlugField null Tru
  • 格拉姆-施密特正交化

    给定一个具有独立列的矩阵 A 不一定是方阵 我能够应用 Gram Schmidt 迭代并使用 Matlab 函数为其列空间 以正交矩阵 Q 的形式 生成正交基qr A 1 1 1 0 1 2 Q R qr A and then gt gt
  • C# 中的 TraceRoute 和 Ping

    有人有 C 代码可以方便地对目标计算机执行 ping 和跟踪路由吗 我正在寻找一个纯代码解决方案 而不是我现在正在做的事情 即调用 ping exe 和tracert exe 程序并解析输出 我想要更坚固的东西 鉴于我今天必须编写一个 Tr
  • 在设备上调试 Ionic 3 代码

    我正在测试 Ionic 3 到目前为止一切正常 我希望在 ionic Lab 上调试 TS 代码 因此我在 package json 中添加了下一个配置 config ionic source map source map 之后 我能够看到
  • 部分视图和渲染部分视图有什么区别?

    我对 ASP NET MVC 很陌生 请让我知道哪里应该使用部分视图以及哪里应该渲染部分视图 提前致谢 此链接可能有帮助 Html RenderPartial 此方法结果将直接写入 HTTP 响应流 这意味着它使用与当前网页 模板中使用的相
  • QWebEnginePage.print 与 QPrintPreviewDialog 导致空预览

    我有一个曾经使用过的程序QWebKit在对话框中显示和打印自定义生成的 HTML 报告 现在 我想将整个内容转换为QWebEngine 到目前为止一切正常 只有打印不行 到目前为止我用过QWebView print 将整个 HTML 数据交
  • JSF 2.0:设置验证时,复合组件内的 h:inputText 因非 String 对象而失败

    在支持 bean 中 Min 3 Integer foo 如果我有这样的形式
  • Tomcat 服务器无法“外部”工作

    我已经设置了 Tomcat 服务器并且它可以在本地主机上运行 但是我无法在外部运行它 我需要更改一些设置吗 我尝试了一切 但它似乎在其他地方不起作用 这很奇怪 因为它在本地主机上工作得很好 因此 您正在 spring boot 应用程序中运
  • 基于文件名的文件夹名称

    这实际上不是一个编码问题 我需要将所有文件放入单独的目录中 以便每个文件都有自己的目录 其名称基于文件名 因此 在我制作应用程序来执行此操作之前 有人知道可以执行此操作的软件吗 比如Automator什么的 无需构建应用程序 从 Windo
  • 现代 CPU 保持标志更新是否需要花费大量资源?

    据我了解 在现代无序 CPU 上 最昂贵的东西之一是状态 因为必须在多个版本中跟踪该状态 在许多指令中保持最新状态等 一些指令集 例如 x86 和 ARM 大量使用标志 这些标志是在成本模型不是现在的样子时引入的 并且标志只花费几个逻辑门
  • 如何检查用户是否在 Google Play 上对您的应用进行了评分?

    我想检查用户是否在 Google Play 上对我的应用程序进行了评分 而不是有多少颗星 只要他们是否有 如果他们没有 我将通过一个对话框提示他们 要求他们使用以下代码对其进行评分 startActivity new Intent Inte
  • MSBuild ITaskItem RecursiveDir 元数据消失

    我有一个自定义 MSBuild 任务 它处理一组文件并返回该文件的修改子集 基本上 我只是根据输入创建一个新的 ITaskItem 数组 跳过一些项目 但是 当此结果集返回到 MSBuild 时 RecursiveDir 元数据消失 在我的
  • 数据库连接字符串和排序规则

    是否可以在 MySql 连接字符串中设置连接排序规则以及如何设置 因为服务器上有用于新连接的默认设置 两件事我can t do 无法通话SET COLLATION CONNECTION打开连接后 因为我正在使用实体框架来为我执行所有调用正如
  • Java Swing 以饼图形式显示进度

    我想以饼图格式显示进度 有人可以帮忙吗 我有数据要显示 但如何以这种格式显示它 当我们下载文件时 Google Chrome 中会显示进度 根据 trashgod 提供的链接 这里是实现 馅饼 效果的一种方法 这仅处理不确定的进度条 但添加