标签: paintcomponent

paintComponent是如何工作的?

这可能是一个非常无聊的问题.我刚刚开始学习Java

我不明白paintComponent方法的操作.我知道如果我想画一些东西,我必须覆盖paintComponent方法.

public void paintComponent(Graphics g)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

但它何时被称为?我从来没有看到像"object.paintComponent(g)"这样的东西,但它仍然是在程序运行时绘制的.

什么是Graphics参数?这个从哪里来?调用方法时必须提供参数.但正如我之前所说,似乎永远不会明确地调用此方法.那么谁提供这个参数呢?为什么我们必须将其转换为Graphics2D?

public void paintComponent(Graphics g)
{
    ...
    Graphics2D g2= (Graphics2D) g;
    ...
}
Run Code Online (Sandbox Code Playgroud)

java swing paintcomponent

61
推荐指数
2
解决办法
12万
查看次数

如何在JPanel中绘制?(Swing /图形Java)

我正在做一个项目,我正在尝试制作一个绘画程序.到目前为止,我已经使用Netbeans创建了一个GUI并设置了该程序.

到目前为止,我可以调用所有必要的协调来绘制内部,但我对如何在其中进行实际绘制非常困惑.

在我的代码结束时,我尝试在面板内绘图失败.

谁能解释/展示如何在这样的例子中使用图形?

我找到的所有示例都创建了一个类并对其进行了扩展,JPanel但我不知道是否可以执行此操作,因为它是在netbeans中生成的.

我需要画在里面JPanel,在我的内心JFrame.我不知道在哪里放图形类.

JavaPaintUI类

package javapaint;

import java.awt.*;
import javax.swing.*;

public class JavaPaintUI extends javax.swing.JFrame {

public JavaPaintUI() {
    initComponents();
}


private void initComponents() {


    jPanel2 = new javax.swing.JPanel();

    jPanel2.setBackground(new java.awt.Color(255, 255, 255));
    jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    jPanel2.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mousePressed(java.awt.event.MouseEvent evt) {
            jPanel2MousePressed(evt);
        }
        public void mouseReleased(java.awt.event.MouseEvent evt) {
            jPanel2MouseReleased(evt);
        }
    });
    jPanel2.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
        public void mouseDragged(java.awt.event.MouseEvent evt) {
            jPanel2MouseDragged(evt);
        }
    });
    pack();
}// </editor-fold>                        

int currentX, currentY, oldX, oldY; …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel draw paintcomponent

48
推荐指数
3
解决办法
21万
查看次数

Swing中paint,paintComponent和paintComponents之间的区别

是什么之间的实际差异paint(),paintComponent()以及paintComponents()在的Java Swing?

我试图理解Oracle文档中解释的内容,但我不清楚.

java swing paintcomponent

27
推荐指数
2
解决办法
3万
查看次数

如何绘制一个给定X和Y坐标作为圆的中间点的圆?

我开发了一种用于定位塔架信号强度的电信应用.我使用了java swing,当我在移动信号发射塔位置的给定点周围绘制圆圈时遇到问题.我已经计算了X,Y坐标和半径值.

请找到我用来绘制圆圈的下面的代码,它有问题.

JPanel panelBgImg = new JPanel() {
    public void paintComponent(Graphics g) {
        g.drawOval(X, Y, r, r);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,它创建了圆圈,但没有将X和Y坐标作为中心点.将X和Y坐标作为圆的左上角.

任何人都可以通过将给定的X和Y坐标作为圆的中心点来帮助我绘制圆.

java swing java-2d jpanel paintcomponent

22
推荐指数
3
解决办法
17万
查看次数

绘制一个半径为圆的圆并围绕边缘指向

我真的被困在如何编程这个.如何在Java中用半径绘制一个圆并围绕边缘指向?

我需要在具有半径的JFrame中绘制一个圆并围绕圆周指向.我可以在数学上计算如何找到边缘点的坐标,但我似乎无法编程圆.我目前正在使用Ellipse2D方法,但这似乎不起作用并且不返回半径,因为根据我的理解,它不从中心绘制圆而是使用高度和宽度从起始坐标绘制.

我当前的代码是在一个单独的框架上,但我需要将它添加到我现有的框架.

import java.awt.*; 
import javax.swing.*; 
import java.awt.geom.*; 

public class circle extends JFrame { 
  public circle() { 
     super("circle"); 
     setSize(410, 435); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Panel sp = new Panel(); 
     Container content = getContentPane(); 
     content.add(sp); 
     setContentPane(content); 
     setVisible(true); 
 } 

 public static void main (String args[]){
  circle sign = new circle(); 
 } 
} 

class Panel extends JPanel { 
 public void paintComponent(Graphics comp) { 
     super.paintComponent(comp); 
     Graphics2D comp2D = (Graphics2D) comp; 

     comp2D.setColor(Color.red); 
     Ellipse2D.Float sign1 = new Ellipse2D.Float(0F, 0F, 350F, 350F); 
     comp2D.fill(sign1); 
 } 
}
Run Code Online (Sandbox Code Playgroud)

java geometry swing drawing paintcomponent

21
推荐指数
1
解决办法
8万
查看次数

如何在图形中以透明颜色制作矩形?

我试图在我的应用程序上以红色阴影绘制一个矩形,但我需要使它变得透明,以便它下面的组件仍然显示.但是我仍然想要一些颜色仍然会显示.我正在绘制的方法如下:

protected void paintComponent(Graphics g) {
    if (point != null) {
        int value = this.chooseColour(); // used to return how bright the red is needed

        if(value !=0){
            Color myColour = new Color(255, value,value );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
        else{
            Color myColour = new Color(value, 0,0 );
            g.setColor(myColour);
            g.fillRect(point.x, point.y, this.width, this.height);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么能让红色阴影有点透明?我不需要它完全透明.

java swing colors paintcomponent translucency

19
推荐指数
1
解决办法
4万
查看次数

在调整Jframe大小之前,JPanel不会更新

我将JPanel子类化为覆盖paintComponent(Graphics),我想在jframe中将图像绘制到jpanel上.

但是在我改变jframe的大小之前,我的图像还没有显示出来.这是我的代码:

public class ImagePanel extends JPanel{

    public void setImage(BufferedImage bi)
    {
        image = bi;
        revalidate();
    }

    @Override
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        if(image != null)
        {
            g.drawImage(image, 0, 0, this);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java user-interface swing paintcomponent

17
推荐指数
3
解决办法
4万
查看次数

Java - 在paintComponent中使用合成的圆角面板

从最初的问题(下面),我现在提供以下奖励:

AlphaComposite圆角的基础解决方案.

  • 请用一个演示JPanel.
  • 角落必须完全透明.
  • 必须能够支持JPG绘画,但仍然有圆角
  • 不得使用setClip(或任何剪辑)
  • 必须有不错的表现

希望有人快速选择这个,这似乎很容易.

如果有一个充分解释的原因,为什么永远不会这样做,其他人同意,我也会奖励赏金.

这是我想到的一个示例图像(但使用AlphaComposite)在此输入图像描述


原始问题

我一直试图找到一种使用合成来做圆角的方法,非常类似于如何用Java制作圆角图像http://weblogs.java.net/blog/campbell/archive/2006/07/ java_2d_tricker.html.

但是,我没有中间BufferedImage的尝试不起作用 - 圆形目标合成显然不会影响源.我尝试了不同的东西,但没有任何作用.应该得到一个圆形的红色矩形,而不是我得到一个正方形.

所以,我有两个问题,真的:

1)有没有办法使这项工作?

2)中间图像是否会实际产生更好的性能?

SSCCE:

测试面板TPanel

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JLabel;

public class TPanel extends JLabel {
int w = 300;
int h = 200;

public TPanel() {
    setOpaque(false);
    setPreferredSize(new Dimension(w, h));
        setMaximumSize(new Dimension(w, h));
        setMinimumSize(new Dimension(w, h));
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d …
Run Code Online (Sandbox Code Playgroud)

java swing compositing rounded-corners paintcomponent

14
推荐指数
1
解决办法
5351
查看次数

paint()和paintcomponent()之间的区别?

我已经尝试过这方面的教程,但我仍然不太了解它.基本上我的问题是哪种方法更好,为什么?我应该使用paintpaintComponent

请尽量保持答案简单,谢谢.

java swing paint paintcomponent

12
推荐指数
2
解决办法
1万
查看次数

模拟雨

我正在用java制作游戏,我想创建一个倾盆大雨的模拟.云应该在下雨时向右移动.移动云是没有问题的.这是我正在努力的下雨.

我想要做的是使用计时器绘制一个矩形,这应该看起来像是在云中的随机x值下雨.然后每100毫秒将下降的y值加1.但我不想为每次降雨创建100个不同的矩形,x变量和y变量.

知道我怎么能做到这一点?建议赞赏!


这是一场2D游戏..对不起.

java paintcomponent

10
推荐指数
1
解决办法
5638
查看次数