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
即可解决问题