Java 按钮不显示

Java 按钮不显示,java,swing,button,frame,Java,Swing,Button,Frame,我有一个奇怪的问题 我有一个JFrame并添加了两个JInternalFrame 我在其中一个内部框架中添加了一个JPanel 我使用了一个鼠标监听器来监听jpanel,并编写了一个代码“就像在释放鼠标时将设备对象放在一个类extendng jpanel中一样” 设备图像确实会显示,但仅在我移动d内部帧或将其最大化后显示。。为什么是tat 下面的代码是添加到一个内部框架中的JPanel public class Board extends JPanel implements MouseListe

我有一个奇怪的问题

我有一个JFrame并添加了两个JInternalFrame

我在其中一个内部框架中添加了一个JPanel

我使用了一个鼠标监听器来监听jpanel,并编写了一个代码“就像在释放鼠标时将设备对象放在一个类extendng jpanel中一样”

设备图像确实会显示,但仅在我移动d内部帧或将其最大化后显示。。为什么是tat

下面的代码是添加到一个内部框架中的JPanel

public class Board extends JPanel implements MouseListener{
Device[] devices=new Device[10];

int X,Y,i=0;
int j=10;

Point p1,p2;

ImageIcon icon;
public Board()
{
    setBackground(Color.WHITE);
    this.addMouseListener(this);
    setLayout(null);


}

public void mouseClicked(MouseEvent me){

}
public void mouseExited(MouseEvent me){
}
public void mouseEntered(MouseEvent me){

}
public void mousePressed(MouseEvent me){
}

public void mouseReleased(MouseEvent me){

    X=me.getX();
    Y=me.getY();

    icon=new ImageIcon("E:\\java\\ecadpb\\src\\ecadpb\\device"+Layout1.clicked+".png");

    devices[i].setBounds(X,Y,icon.getIconWidth(),icon.getIconHeight()+20);
    devices[i].setVisible(true);
    this.add(devices[i]);
    this.repaint(X,Y,icon.getIconWidth(),icon.getIconHeight()+20);
    i++;
    }

}

}
以下是设备类

public Device(Point pos,JLabel label,Rectangle r,int input,int output){
    setVisible(true);
    setBackground(Color.BLACK);
    deviceNo=dno;
    position=pos;
    inputs=input;
    outputs=output;
    this.r=r;

    label.setLayout(null);
    setOpaque(false);
    this.add(label);
    label.addMouseListener(this);
    dno++;


}

}

Swing必须布局新的组件层次结构。查看及其相关方法。

添加组件后调用:

this.add(devices[i]);
revalidate();

好极了我调用了重新验证方法,它解决了这个问题。。谢谢!!