日期:2014-05-20  浏览次数:20757 次

label 的repaint()问题
final myLabel label = new myLabel("文件");
  label.setBounds(0, 0, 40, 20);
  label.setBackground(Color.WHITE);
  label.setForeground(Color.WHITE);
  label.addMouseListener(new MouseAdapter() {

  public void mouseEntered(MouseEvent e) {
  label.setForeground(Color.BLACK);
  label.setIsSelected(true);
  label.repaint();
  popmenu.show(label, label.getX(), label.getHeight());
  }
  }

  为什么加了popmenu.show(label, label.getX(), label.getHeight())后,
  label.repaint()却没有效果了.新手求解。。。。

------解决方案--------------------
用多线程吧
这种重叠属于重绘,只能响应一种,就是写在后面的
------解决方案--------------------
使用label.repaint()就没有好使过 
目前还不知道这东西是干什么用的
------解决方案--------------------
你要实现什么?
改变label?
就直接setText就可以了啊
------解决方案--------------------
没大看懂,如果要加repaint().也要加在后面。
试试先判断一下:
 if (e.getButton() == MouseEvent.BUTTON3) {
popmenu.show(label, label.getX(), label.getHeight());
 }
------解决方案--------------------
用多线程吧

------解决方案--------------------
awt/swing不要混用。
awt和swing由于绘制机制不同,混用时经常出现奇特的效果

用javax.swing.Popup 代替 java.awt.PopupMenu
即可解决问题