【问题标题】:how to set position of "string painted" in JProgressBar如何在 JProgressBar 中设置“绘制的字符串”的位置
【发布时间】:2014-08-19 14:13:43
【问题描述】:

默认情况下,“绘制的字符串”出现在 JProgressBar 的中心,但我希望“绘制的字符串”应该出现在 JProgressbar 值之后的点,例如,如果 JprogressBar 的值为 0,“绘制的字符串”应该出现在 JProgressBar 的最左侧,请告诉我该怎么做???

【问题讨论】:

    标签: java


    【解决方案1】:

    你需要继承 JProgressBar...

    private class CustomProgressBar extends JProgressBar{
    
        private static final long serialVersionUID = 1L;
        private boolean isStringToBePainted = false;
    
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
    
            if(isStringToBePainted ){
                Dimension size = CustomProgressBar.this.getSize();
                int x = (int)( size.width * CustomProgressBar.this.getPercentComplete() );
                int height = g.getFontMetrics().getHeight();
                int d = g.getFontMetrics().getDescent();
                int y = (size.height + height)/2-d;
                String text = getString();
                g.setColor(Color.BLACK );
                g.drawString(text, x, 12);
            }
        }
    
        @Override
        public void setStringPainted(boolean b) {
            // don't do super.setStringPainted(b);
            //super.setStringPainted(b);
            isStringToBePainted=b;
        }
    }
    

    也许你在字体颜色上玩了一下,我还没找到合适的...

    【讨论】:

    • 我不会为你编写代码......我给了一个很好的提示,告诉你如何解决你的问题......你自己试试,如果你失败了,告诉我你取得了什么成就你的问题是什么......
    • stackoverflow.com/questions/25416336/… 上看到您的问题,上面的代码可能也适用于垂直进度条... - 但您必须切换垂直和水平坐标...
    猜你喜欢
    • 2016-01-13
    • 2014-10-12
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多