java 组件更新,java – 我可以批量处理一些Swing组件更新,以便重绘全部一次完成吗?...

我的JToolBar中有一堆按钮,我根据应用程序的状态将其中一些设置为禁用或启用.我发现当我一次更新一些按钮时,它们并非同时重新绘制.我想确保当我设置一些禁用/启用的按钮时,它们都会同时改变状态.

下面是一个小测试,演示了这个问题. (它需要当前目录中的文件a.png用作按钮图标.)运行时,会显示一个带有10个按钮的工具栏.在终端按Enter键将切换所有按钮的禁用状态.至少在我的机器上,每次执行此操作时,按钮都会以看似随机的顺序重新绘制,而不是一次性完成.

似乎双缓冲可以解决问题,虽然我尝试的第一件事(在JToolBar上设置双缓冲)似乎没有影响任何东西.

谢谢,

卡梅伦

import java.awt.*;

import javax.swing.*;

import java.io.*;

import java.util.*;

public class Test {

public static void main(String[] args) throws IOException {

final JButton[] bs = new JButton[10];

EventQueue.invokeLater(new Runnable() {

public void run() {

JFrame f = new JFrame("test");

JToolBar t = new JToolBar();

f.getContentPane().add(t);

for (int i = 0; i < bs.length; i++) {

bs[i] = new JButton(new ImageIcon("a.png"));

t.add(bs[i]);

}

f.pack();

f.setVisible(true);

}

});

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

for (;;) {

r.readLine();

EventQueue.invokeLater(new Runnable() {

public void run() {

for (JButton b : bs) {

b.setEnabled(!b.isEnabled());

}

}

});

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值