首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的"Paint“事件处理程序是什么?

Java中的"Paint“事件处理程序是什么?
EN

Stack Overflow用户
提问于 2010-03-13 18:31:43
回答 5查看 5.8K关注 0票数 2

Java中的事件处理程序(使用net beans、Swing)与C#中的画图相似吗?在恢复窗体、调整窗体大小时应激发的事件...等

代码语言:javascript
复制
public void paint(Graphics g2){
    g2 = pnlDrawing.getGraphics();
    g2.clearRect(0, 0, size, size);
    g2.setColor(Color.BLACK);
    g2.fillRect(size/2-1, 0, 2, size); // draw y axis
    g2.fillRect(0, size/2-1, size, 2); // draw x axis

    //set the font
    g2.setFont(new Font("Arial", 2, 12));

    // write the values on the X axis
    for(int i=0; i<=10; i++){
        if(i == 0)
            continue;
        int pos1 = (size/2-1)-i*30;
        int pos2 = (size/2-1)+i*30;
        g2.draw3DRect(pos1, size/2-3, 1, 5, true);
        g2.drawString(String.valueOf(-i),pos1-10,size/2-3+20);
        g2.draw3DRect(pos2, size/2-3, 1, 5, true);
        g2.drawString(String.valueOf(i),pos2-5,size/2-3+20);
    }

    for(int i=0; i<=10; i++){
        if(i == 0)
            continue;
        int pos1 = (size/2-1)-i*30;
        int pos2 = (size/2-1)+i*30;
        g2.draw3DRect(size/2-3, pos1, 5, 1, true);
        g2.drawString(String.valueOf(i),size/2-3+10,pos1+5);
        g2.draw3DRect(size/2-3, pos2, 5, 1, true);
        g2.drawString(String.valueOf(-i),size/2-3+10,pos2+5);
    }

       pnlDrawing.invalidate();
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-13 18:44:14

方法:

代码语言:javascript
复制
public void paint(Graphics g)

java.awt.Component类(它是所有Swing组件的超类)中是用于绘制的回调方法。因此,任何需要重新绘制的组件最终都将调用此方法,因此如果您希望执行自己的绘制,则可以覆盖该方法。

==更新==

你需要子类化一个组件来获取绘制回调,例如

代码语言:javascript
复制
public class MyPanel extends JPanel {
    public void paint(Graphics g) {
        // do your painting here
    }
}

或者,如果您不想创建一个全新的类,可以使用匿名内部类,例如

代码语言:javascript
复制
pnlDrawing = new JPanel() {
    public void paint(Graphics g) {
        // Your painting code
    }
}
票数 5
EN

Stack Overflow用户

发布于 2010-03-13 23:39:21

你应该重写paintComponent方法,因为paint还负责绘制子组件、边框和其他一些事情。

票数 3
EN

Stack Overflow用户

发布于 2010-03-14 01:12:13

该事件应在窗体恢复、调整大小时激发...等

我不太明白你的问题。Swing将自动确保已为您完成绘制,并且没有您可以监听的“绘制事件”。如果你想了解更多关于绘画的知识,你可以在Painting in AWT and Swing上阅读。

如果您想知道窗体执行以下操作时触发的是什么事件:

a)调整大小-使用ComponentListener

b)已恢复-使用WindowListener

在上述情况下,请阅读Swing Tuturial中的相应部分。您还可以找到关于自定义绘制的一节,它解释了为什么应该在paintComponent()方法中进行绘制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2437995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档