Кнопка не отображается - PullRequest
0 голосов
/ 14 февраля 2012

У меня странная проблема ...

У меня есть JFrame и добавлены два JInternalFrame

Я добавил JPanel в один из внутренних фреймов.

Я использовал слушатель мыши для jpanel и написал код, "как при размещении мыши на объекте устройства (класс exteng 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++;


}

}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Позвоните после добавления компонента:

this.add(devices[i]);
revalidate();
0 голосов
/ 14 февраля 2012

Swing должен выложить новую иерархию компонентов. Взгляните на JComponent.revalidate () и связанные с ним методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...