单击图片后如何制作Jpanel节目

时间:2015-06-30 17:16:31

标签: java swing jpanel

我正在写一个游戏,其中有一组岛屿,每个岛上有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;
                }
            }
        }
    }
}

2 个答案:

答案 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(); ,它运行正常。 如果,这是你的问题,那么它可能对你有帮助。

Reference Link

答案 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

再次显示它