「java重画」java重画窗口

博主:adminadmin 2023-01-15 16:12:10 591

今天给各位分享java重画的知识,其中也会对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重画的信息别忘了在本站进行查找喔。