许多GUI应用程序都有进度计,表示到目前为止完成一个活动所取得的进度占预期总活动的百分比。编写一个程序来显示进度计,如下所示。进度计由一个窗口组成,其中一列有11个标签。前10个标签表示10%的进度步骤,最初是红色的.底部的标签以文本百分比的形式显示剩余的活动量,并最初设置为“ 0%” 。创建功能来模拟10%进度的步骤。为此,用户在Eclipse内部的控制台上反复按下回车键(为此使用Scanner对象)。每一次,最上面的红色标签被更改为绿色,进度标签值增加10,直到该值为100%。确保当用户尝试超过100%时不会发生错误。
时间: 2023-11-28 09:47:36 浏览: 93
以下是一个实现此功能的Java程序:
```java
import java.awt.*;
import java.util.Scanner;
import javax.swing.*;
public class ProgressBarDemo extends JFrame {
private static final long serialVersionUID = 1L;
private static final int MAX_PROGRESS = 10;
private static final int MAX_PERCENT = 100;
private static final String INITIAL_PERCENT = "0%";
private static final Color RED_COLOR = Color.RED;
private static final Color GREEN_COLOR = Color.GREEN;
private JLabel[] progressLabels;
private JLabel percentLabel;
public ProgressBarDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Progress Bar Demo");
setSize(400, 150);
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(2, 11));
progressLabels = new JLabel[MAX_PROGRESS];
for (int i = 0; i < MAX_PROGRESS; i++) {
JLabel label = new JLabel(" ");
label.setOpaque(true);
label.setBackground(RED_COLOR);
progressLabels[i] = label;
contentPane.add(label);
}
percentLabel = new JLabel(INITIAL_PERCENT, SwingConstants.CENTER);
contentPane.add(percentLabel);
setVisible(true);
}
public void updateProgress(int percent) {
int numSteps = percent / (MAX_PERCENT / MAX_PROGRESS);
for (int i = 0; i < MAX_PROGRESS; i++) {
if (i < numSteps) {
progressLabels[i].setBackground(GREEN_COLOR);
} else {
progressLabels[i].setBackground(RED_COLOR);
}
}
percentLabel.setText(percent + "%");
}
public static void main(String[] args) {
ProgressBarDemo demo = new ProgressBarDemo();
Scanner scanner = new Scanner(System.in);
int percent = 0;
while (percent < MAX_PERCENT) {
System.out.println("Press enter to simulate progress...");
scanner.nextLine();
percent += MAX_PERCENT / MAX_PROGRESS;
if (percent > MAX_PERCENT) {
percent = MAX_PERCENT;
}
demo.updateProgress(percent);
}
System.out.println("Done!");
}
}
```
在主方法中,我们创建了一个 `ProgressBarDemo` 对象,并使用 `Scanner` 对象来模拟进度的增加。每次用户按下回车键时,程序会增加10%的进度,直到达到100%为止。在每次更新进度时,我们调用 `updateProgress` 方法来更新进度条和百分比标签的显示。`updateProgress` 方法根据当前的进度计算出需要将哪些标签更改为绿色,哪些标签更改为红色,并设置百分比标签的文本。
阅读全文