gpt4 book ai didi

Java Swing JFrame 背景未显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:09 24 4
gpt4 key购买 nike

我不知道为什么背景颜色没有显示在我的 Jframe 上。下面是我试过的代码。

当我打电话

AnimatedDialogBox animatedDialogBox = new AnimatedDialogBox("Saving TransSet form", dataSheetTable);

它没有显示我需要的确切颜色。它显示没有任何背景颜色。 AnimatedDialogBox 类如下:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Toolkit;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
import net.miginfocom.swing.MigLayout;


public class AnimatedDialogBox {

private JFrame progressDialog ;
private JProgressBar bar;
private Task task;
private ResourceManager resourceManager = new ResourceManager();

public AnimatedDialogBox(String message, JComponent parentComponent) {
progressDialog = new JFrame( message);
progressDialog.setLayout(new MigLayout());
progressDialog.setUndecorated(true);
progressDialog.setBackground(resourceManager.getColor("error.Panel.background")); // RGB = 243, 255, 159
progressDialog.setPreferredSize(new Dimension(300, 100));
JLabel label = new JLabel(message);
label.setBackground(resourceManager.getColor("error.Panel.background"));
progressDialog.add(label, "gapbefore 80,gapbottom 30, wrap");
bar = new JProgressBar(0, 100);
bar.setIndeterminate(true);
bar.setBackground(resourceManager.getColor("error.Panel.background"));
progressDialog.add(bar, "gapbefore 80, gapbottom 30, wrap");
progressDialog.setFocusableWindowState(false);
Point point = progressDialog.getLocation();
Dimension cDim = parentComponent.getSize();

progressDialog.setLocation((int) (cDim.getWidth() / 2)-100,
(int) cDim.getHeight() + 350);

progressDialog.pack();

task = new Task();
task.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equalsIgnoreCase("progress")) {
int progress = task.getProgress();
if (progress == 0) {
bar.setIndeterminate(true);
} else {
bar.setIndeterminate(false);
bar.setValue(progress);
progressDialog.dispose();
}
}
}
});
task.execute();
progressDialog.setVisible(true);
}

class Task extends SwingWorker<Void, Void> {
private static final long SLEEP_TIME = 1000;

public Task() {
}

@Override
public Void doInBackground() {
setProgress(0);
try {
Thread.sleep(SLEEP_TIME);// imitate a long-running task
} catch (InterruptedException e) {
}
setProgress(100);
return null;
}

@Override
public void done() {
Toolkit.getDefaultToolkit().beep();
}
}
}

最佳答案

JProgressBar 的背景颜色由其 UI 委托(delegate) ProgressBarUI 确定。例如,

UIManager.put("ProgressBar.background", Color.red);

并非所有实现都使用颜色;例如,com.apple.laf.AquaProgressBarUI 忽略有利于外观的设置 here .作为替代方案,您可能需要考虑在封闭面板上使用有色背景或 Border,如建议的那样 here .

另请注意,您可以从 process() 方法更新 GUI,如图所示 here .

关于Java Swing JFrame 背景未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com