在JProgressBar上添加文本,可以通过以下步骤实现:
import javax.swing.*;
import java.awt.*;
public class JProgressBarWithText extends JProgressBar {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setFont(getFont());
g2d.setColor(getForeground());
String text = getValue() + "%";
int textWidth = g2d.getFontMetrics().stringWidth(text);
int textHeight = g2d.getFontMetrics().getHeight();
int x = getWidth() / 2 - textWidth / 2;
int y = getHeight() / 2 + textHeight / 2;
g2d.drawString(text, x, y);
}
}
import javax.swing.*;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("JProgressBar with Text");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
JProgressBarWithText progressBar = new JProgressBarWithText();
progressBar.setValue(50);
progressBar.setStringPainted(false);
frame.getContentPane().add(progressBar, BorderLayout.CENTER);
frame.setVisible(true);
});
}
}
这样就可以在JProgressBar上添加文本了。在自定义的JProgressBarWithText类中,我们重写了paintComponent方法,在其中添加了文本的绘制。在主程序中,我们创建了一个JProgressBarWithText对象,并设置了其进度值。
领取专属 10元无门槛券
手把手带您无忧上云