我正在写一个游戏,其中有一组岛屿,每个岛上有5个工人,当我左键点击一个工人时,光标出现在它上面,当我右键点击岛上的某个地方时,所选择的工人移动那里......我希望每当我点击一个工人时,JPanel就会显示在屏幕的右侧。面板将显示工作人员的统计数据,例如生命值和携带重量,但问题是我不能让面板出现。这是我点击工人的代码:
if(SwingUtilities.isLeftMouseButton(e)){
if(canSelect){
for (int j = 0; j < countries.size(); j++) {
for (int i = 0; i < countries.elementAt(j).getMen().size(); i++) {
if(m==countries.elementAt(j).getMen().elementAt(i).getX() && n==countries.elementAt(j).getMen().elementAt(i).getY()) {
countries.elementAt(j).getMen().elementAt(i).setY(countries.elementAt(j).getMen().elementAt(i).getY()+1);
countries.elementAt(j).getMen().elementAt(i).setSelected(true);
getGraphics().drawImage(arrow.getImage(), (countries.elementAt(j).getMen().elementAt(i).getX()+mapX)*20+5,(countries.elementAt(j).getMen().elementAt(i).getY()+mapY)*20-12,null);
canSelect = false;
}
}
}
}
}
答案 0 :(得分:0)
我在JFrame中的jbutton点击上尝试了以下代码,但它没有按预期工作。 (即动态创建具有2个标签并在JFrame中显示的面板)
JPanel p = new JPanel();
p.setLayout(new GridLayout(2, 1));
p.add(new JLabel("Health : 90%"));
p.add(new JLabel("Carrying weight : 4 Kg"));
this.add(p); //JFrame
p.setSize(100, 50);
p.setLocation(100, 100);
p.setVisible(true);
但是在上面的代码末尾添加代码 this.validate(); ,它运行正常。 如果,这是你的问题,那么它可能对你有帮助。
答案 1 :(得分:0)
可能是您的JPanel
创建于现有JPanel
之下,因此无法看到。将新的JPanel
放在现有的JPanel
上。喜欢这个
JPanel nPanel = new JPanel();
nPanel.setBounds(x,y,w,h); //your desired location and size
mainPanel.add(nPanel);
nPanel.setVisible(false);
您可以使用event