【问题标题】:Draw Rectangle as Progressbar in JFrame在JFrame中绘制矩形作为进度条
【发布时间】:2013-11-19 11:11:57
【问题描述】:

我有一个带有 BorderLayout() 的 JFrame。在 SOUTH Layout Constraint 中,我想放置一个进度条。不是动态的,而是不时设置值(0-100)的值。 我想到了一个 JPanel,我在其中绘制了一个具有适当宽度的矩形。 如何在 JPanel 中绘制矩形?

JFrame frame = new JFrame();
        frame.setBounds(100, 100, 790, 539);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new BorderLayout(0,0));
        frame.setResizable(false);

        JPanel panelSouth = new JPanel();

        frame.getContentPane().add(panelSouth, BorderLayout.WEST);

我在想什么,也许我可以调整 JPanel panelSouth 的大小。但在 Borderlayout 中,它总是延伸到整个 SOUTH。

【问题讨论】:

  • How can I draw a rectangle inside a JPanel? 例如按照官方 Oracle 教程 2D GraphicsPerforming Custom PaintingHow to Decorate Components with the JLayer Class for Java7
  • In the SOUTH Layout Constraint I want to put a progressbar. Not a dynamic one but one that gets set with a value (0-100) from time to time. hmmm 默认情况下自定义绘画永远不会返回任何大小,您必须以编程方式设置此首选大小,确保没有您的 SSCCE 没有任何切肉刀只会使短裤变暗
  • “不是动态的,而是不时设置值 (0-100) 的。”我不明白这句话的意思。 JProgressBar 有一个 setValue 方法,您可以不时调用它。那你为什么不使用它呢?什么是“动态的”?

标签: java swing jframe jpanel progress-bar


【解决方案1】:

不要从头开始,坚持使用JProgressBar 来简化您的事件编码。您可以在BasicProgressBarUI 中的paint() 方法的实现中绘制一个矩形,如此处所示,在paintIndeterminate() 中使用fillOval() 绘制一个椭圆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多