可能是你的对话的拥有者有问题吧
你得JOptionPane.showConfirmDialog(Owner,Message,...);
是不是Owner就是你得画图的面板,就是this,如果这样的话,你改成
其他的实验一下。再就是你得Paint()方法和PaintComponent()方法,这两个方法,可能有问题
没有代码也无法确定。
你得JOptionPane.showConfirmDialog(Owner,Message,...);
是不是Owner就是你得画图的面板,就是this,如果这样的话,你改成
其他的实验一下。再就是你得Paint()方法和PaintComponent()方法,这两个方法,可能有问题
没有代码也无法确定。
另外,一闪而过可能是因为你绘制的图形的作用域就是监听器的作用域吧
to cuizm: 我是把绘图的代码写到paint事件里的呀 伪码如下:
注明:paintpane是放在JScrollPane里的,另外窗口中还有其他很多控件
JPanel paintpane=new JPanel(){
public void paint(Graphics g){
super.paint(g);
//绘图代码
}
};
paintpane.addMouseListener(new MouseListener(){
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
MyDialog dialog=new MyDialog();
dialog.setLocation(int,int);
dialog.show();
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
}
);
Class MyDialog extends JDialog{
public MyDialog(){
...
}
.
.
.
}
我认为应该是覆盖paint方法,在其中调用paintComponent方法
你的图形是在哪里声明的呢?
我觉得你的问题出现在paint方法里调用的super.paint(g);
你试试这样成不成:
g.drawRect(0,0, this.getWidth(), this.getHeight());
this.paintChildren(g);这个paint是每次你的窗口被遮住再出现(包括从别的窗口切换回来)都会被调用的
我是这样做的:每类图形元素都为之建立了一个类,选择了要画的图形元素后就调用该类的draw()方法将图画出来,然后将这个对象保存到一个Vector的对象protocol中,这个protocol是全局的静态变量,我有一个reDraw()方法,功能是将protocol中的所有对象的draw()方法都调用一遍,即把画出来的图形重新绘制,我贴出来的代码paint(Graphics g)方法中的“//绘图代码”实际上就是调用该类的reDraw()方法
另外paintChildren(g)方法好象不可视呀,我的绘图面板重载了这个方法,但是好象也不起什么作用啊 to Bluecatr
我在一些地方用了paintpane.repaint();但是好象不起作用啊,所以我干脆用上面说的reDraw()方法重绘图形了
你所说的将画的图形画到一个image上,然后在paint()中将这个image画出来,这是不是就是用到了双缓冲啊