JAVA中box在Frame中显示不完,Java Swing的JFrame的背景没有显示

I don't know why the background color is not showing on my Jframe. Below is the code that I tried.

When I call

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

Its not showing the exact color that I needed. It shows without any background color. The AnimatedDialogBox class is per below :

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 {

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();

}

}

}

解决方案

The background color of a JProgressBar is determined by its UI delegate, ProgressBarUI. For example,

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

Not all implementations use the color; for example, com.apple.laf.AquaProgressBarUI ignores the setting in favor of the appearance seen here. As an alternative, you may want to consider a tinted background or Border on the enclosing panel, as suggested here.

Also note that you can update the GUI from the process() method, as shown here.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值