- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码使用卡片布局向用户显示(预定义的)带有 JButton 的 JPanel,然后显示动态生成的 JPanel 及其响应反馈,然后再继续下一个预定义的 JPanel。但是,我无法显示动态生成的 JPanel,并且使用 revalidate() 和 repaint() 等命令搞乱了一些,我不知道接下来要尝试什么。我可能犯了一个相当简单的错误,但是在尝试了很多组合之后,我有点陷入困境!
编辑:抱歉,这是我之前发布的一段非常无用的代码!我花时间写了一个更好的 SSCCE,它看起来确实与使用 Thread.sleep 有关,但我对此不太擅长,所以不太确定我需要做什么才能使其正常工作。这是我的例子:
public class ExampleClass implements ActionListener{
public void doStuff(){
ExampleClass ec = new ExampleClass();
startExperiment();
}
public static void main(String[] args){
ExampleClass e = new ExampleClass();
e.doStuff();
}
JPanel j;
int count = 0;
CardLayout cards = new CardLayout();
JButton button;
public void startExperiment(){
// Create frame and JFrames
JFrame trial = new JFrame();
trial.setSize(800,600);
JPanel j1 = new JPanel();
JPanel j2 = new JPanel();
j1.setSize(800,600);
button = new JButton("Click me!");
button.addActionListener(this);
j2.setSize(800,600);
j1.add(new JLabel("A Panel"));
j1.add(button);
j2.add(new JLabel("Another Panel"));
JPanel[] pans = {j1,j2};
j = new JPanel();
j.setLayout(cards);
for(int i=0;i<pans.length;i++){
j.add(pans[i], "Card"+i);
}
JPanel end = new JPanel();
end.add(new JLabel("The end!"));
j.add(end,"End");
trial.add(j);
trial.setVisible(true);
}
public void nextTrial(){
JPanel ps = new JPanel();
ps.add(new JLabel("This panel won't display!"));
j.add(ps,"Pause"+count);
cards.show(j,"Pause"+count);
}
class aThread extends Thread {
public aThread(int duration){
dur=duration;
}
int dur;
public void run() {
try {
Thread.sleep(dur);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void pause(int dur){
aThread myThread = new aThread(dur);
myThread.start();
try {
myThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button){
System.out.println("Ow!");
nextTrial();
pause(500);
cards.show(j,"Card1");
}
}
}
我意识到这与我大约 12 个月前在这里提出的问题类似 (http://stackoverflow.com/questions/9200072/jpanel-not-updating-cardlayout-properly-when-i-use-sleep ?rq=1),但我错误地认为使用Thread.join()可以解决我提到的问题。
最佳答案
添加通话
revalidate();
repaint();
向容器添加组件/从容器中删除组件后
关于java - 动态更新 CardLayout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219540/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!