「java重画」java重画窗口
今天给各位分享java重画的知识,其中也会对java重画窗口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、JAVA重画的问题
- 2、java swing 重绘方法,求救~~~
- 3、java 如何禁止组件得到焦点时重画
- 4、java 当鼠标进如指定的圆后,圆消失,同时在原来圆之外的范围重画相同的圆。
- 5、java中repaint()方法到底应该怎么用?
- 6、java重画但之前画的还留着怎么班
JAVA重画的问题
树的话,
你在TREE控件名有没有加别的,如JScrollPane
如果有,
JScrollPane.repaint();试试
java swing 重绘方法,求救~~~
进行界面设计的时候,有时需要设计一些特殊的按钮,如音乐播放器的原型,三角形按钮。如果Swing提供的默认按钮无法满足要求,就需要对按钮控件(JButton)进行重绘。
Swing按钮重绘的基本原理是:创建一个继承自JButton的扩展按钮类,在其中重载paintComponent方法,这个方法用来实现控件的显示界面绘制。
为了使的按钮可以响应鼠标移入、移出按钮等事件,还对它添加了鼠标监听器,这通过addMouseListener方法实现。
java 如何禁止组件得到焦点时重画
可以使用setIgnoreRepaint(true)方法
setIgnoreRepaint
public void setIgnoreRepaint(boolean ignoreRepaint)
设置是否应该忽略从操作系统接受的绘制消息。这不会影响 AWT 在软件中生成的绘制事件,除非它们是对操作系统级别绘制消息的直接响应。
这是很有用的,例如正在全屏模式中运行并且需要更佳的性能,或者使用页面翻转作为缓冲策略时。
java 当鼠标进如指定的圆后,圆消失,同时在原来圆之外的范围重画相同的圆。
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class ShapeTest{
public static void main(String args[]){
//生成图形
int len=2;
Shape[] shapes=new Shape[len];
for(int i=0;ilen;i++)
{
shapes[i]=new Ellipse2D.Double(30+i*100,30+i*100,40+i*30,40+i*30);
}
ShapeTestFrame f=new ShapeTestFrame(shapes);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class ShapeTestFrame extends JFrame{
private JPanel dp=null; //图形面板.
private Shape[] shapes=null;
private ArrayListInteger vIdx=null;// 所有应显示的图形索引;
public ShapeTestFrame(Shape[] ashapes){
this.shapes=ashapes;
//在窗口生成后,使所有图形可见,所有图形索引填充,.
this.vIdx=new ArrayListInteger();
for(int i=0;ishapes.length;i++)
{
vIdx.add(i);
}
//初始化绘图面板
dp=new JPanel(){
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D)g;
super.paintComponent(g2);//应在绘图前这样调用超类方法.
for(int i:vIdx){
g2.setColor(Color.BLACK);
g2.draw(shapes[i]);
g2.setColor(Color.GRAY);
g2.fill(shapes[i]);
}
}
};
//添加鼠标移动事件
dp.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e){
int x=e.getX();
int y=e.getY();
//先清空vIdx,如果图形不包含鼠标点,则将其索引添加到vIdx并重绘.
vIdx.clear();
for(int i=0;ishapes.length;i++){
if(!shapes[i].contains(x,y)){
vIdx.add(i);
}
}
dp.repaint();//鼠标移动时,不断重绘.
}
});
dp.setBackground(Color.WHITE);
this.add(dp);
this.setSize(300,300);
}
}
java中repaint()方法到底应该怎么用?
java里repaint()是重绘component的方法;
repaint()方法用于重绘组件,该方法有下面四种形式:
1。public void repaint()
2。public void repaint(long tm)
//指定调用update方法之前等待的最大毫秒数tm
3。public void repaint(int x,int y,int width,int height)
//重绘组件的指定矩形区域
4。public void repaint(ling tm,int x,int y,int width,int height)
repaint方法不总是马上执行,Java虽然会尽可能快的执行repaint,当Applet运行在较慢的平台上或计算机较忙时,应该考虑使用第2或4种repaint方法,指定在多长时间内必须执行repaint,否则就放弃。
repaint()这个方法是一个具有刷新页面效果的方法,如果你要页面进行重画就可以调用.一般都是在AWT的图形绘制当中调用的到.那么该方法具体的工作原来是怎么样的呢?看下面的结构流程图你就可以大概的了解了:
repaint()方法
|
|
V
AWT线程---paint()方法--图形绘制
|
|
V
update()方法---paint()方法--图形绘制
从上面的流程图可以看出,在绘制动画图形时候如果没有调用repaint()方法的时候直接就是由线程调用paint()方法进行绘制,用repaint()进行刷新显示.但是这样的动画会有个缺点(这样的效果绘制出来会有闪烁).想想做出来的动画总是隔一段时间就闪烁,有人会看吗?那么应该怎么去除闪烁呢?我再下面的文章中会讲到.这里主要的是说明repaint()这个方法.
在调用了repaint()的时候我门可以看出,它并不是直接就去绘制动画(调用paint()),而是通过调用AWT线程在由线程去调用另一个方法update()再由update()调用画笔paint()方法进行绘制.那么这里为什么要多做一步呢?这样是不是为我门多增加代码的书写量呢?回答是当然不会,如果你不调用repaint()那么就不能实现每一次的刷新显示,就只会绘制重叠的图形,不能一张一张的绘制出来.那么其中调用的update()到底是起到什么样的作用呢?
update():清除当前显示并调用paint()方法.当然这个update()方法是可以被修改的,我门在另一篇文章关于"双缓冲技术"中会给大家讲到这点.
综合上面的介绍可以总结出repaint()的工作原理:repaint()通过调用线程再由线程去调用update()方法清除当前显示并再调用paint()方法进行绘制下一个需要显示的内容.这样就起到了一种图片的交替显示从而在视角上形成了动画.
java重画但之前画的还留着怎么班
1、java重绘之前,清空之前所绘即可。
2、JAVA绘图技术使用不多,简单学习即可,无需深究。
3、JAVA语言优势主要还是在web这块,这部分要好好学习。
4、希望对你有帮助。
java重画的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java重画窗口、java重画的信息别忘了在本站进行查找喔。