2012-02-14 3 views
0

У меня есть странная проблема ...Кнопка не отображается

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

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

Я использовал прослушиватель мыши для jpanel и написал код «как размещение объекта устройства (класс extendng jpanel), когда я освобождаю мышь.

Изображение устройства отображается, но только после того, как я переместил внутренний фрейм или увеличил его. Почему тат?

Следующий код является 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++; 


} 

} 

ответ

0

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

+0

фантастический !! я назвал метод revalidate() и решил проблему .. Большое спасибо! –

+0

Отлично - пожалуйста, отметьте этот ответ, как принято тогда :) –

0

вызова после того, как вы добавили компонент:

this.add(devices[i]); 
revalidate(); 
Смежные вопросы