我制作了一个小程序,显示团队/玩家/然后他们的推特,推文等。我的问题似乎与此无关,但它只是我的jPanel没有更新。我在项目中走得很远,并且我继续在我的方法中抛出随机代码段,以便一旦我点击某些东西,“左”jpanel要么被jbuttons取代,要么jbuttons被放入其中,我已经尝试过。下面是我试图开始工作的代码段,它确实没有达到目的。
public void mousePressed(MouseEvent e) {
System.out.println("You clicked on " + ap.getTeams() [addPlayers.OPTIC].getTeamName());
for(int i = 0; i<4; i++){
//JPanel temp = ap.makePanel(ap.getTeams()[ap.OPTIC].getPlayers().get(i).getTwitterScreenName());
//temp.setBounds(0,(i*125), 450,125);
//left.add(temp);
JButton b = new JButton("Test");
b.setBounds(30,30,30,30);
left.add(b);
left.revalidate();
add(left);
add(b);
right.add(b);
left.setVisible(false);
left.setVisible(true);
System.out.println(i);
}
}
}
注释掉的代码是我的主要代码,但我只是使用jbuttons进行测试。正如你所看到的,我只是不断添加随机位,希望能有效。我也尝试过稍后调用,但遗憾的是,这也不起作用。不知道为什么jpanel没有更新,但任何反馈都会很棒,谢谢。
答案 0 :(得分:6)
b
JButton变量将组件添加到多个容器中。您实际上已将其添加到三个容器中。"and i keep throwing random code segments in my method to make it so ..."
- 在墙上扔东西,看看哪些棍子不是创建程序的好启发式方法。从知识库开始 - 这里是Swing教程和Java API,然后规划您的程序结构,然后创建代码。 修改强>
你问:
.....我问的问题是整个事情没有更新的问题是什么?
如果您不使用CardLayout并手动更改组件,则需要在更改后调用容器上的revalidate()
和repaint()
,并且容器应使用新的更新组件。如果这不能解决问题,那么您可能会在未向我们展示的代码中遇到问题,然后您将再次创建并发布minimal example program。同样,它是我们实际看到并体验您的问题的最佳方式。