标签: paintcomponent

将 JPanel 背景设置为透明,setOpaque() 不允许我绘画

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Tetris extends JFrame {

public Tetris() {

    add(new GamePanel());
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setResizable(false);
    setSize(800, 600);
    setVisible(true);
    setLocationRelativeTo(null);
    setTitle("Tetris");
}

public class GamePanel extends JPanel {


    public GamePanel(){
        TetrisBoard tetraBoard= new TetrisBoard();
        GridBagLayout layout= new GridBagLayout();
        this.setLayout(layout);
        GridBagConstraints c = new GridBagConstraints();
        c.gridx = 2;
        c.gridy = 1;
        c.ipadx = 190;
        c.ipady = 390;
        c.insets.left= 360;
        layout.setConstraints(tetraBoard, c);
        this.add(tetraBoard);
        setBackground(Color.WHITE);
    }

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

java swing transparency paint paintcomponent

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

重绘JPanel的一部分

我需要在xy轴坐标系中绘制谷歌和雅虎访问时间.现在我绘制了xy轴坐标系.

public void paintComponent(Graphics gl) {
    Graphics2D g = (Graphics2D) gl;
    g.setColor(new Color(222, 222, 222));
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
    g.setColor(new Color(0, 0, 0));
    int x=15;
    int y=15;
    g.drawString("20", 0, 10);
    for(int i=1;i<=20;i++) {
        g.drawLine(x, y+(35*(i-1)), x, y+(35*i));
        g.drawString(""+(20-i), 0, y+(35*i));
    }
    for(int i=1;i<=10;i++) {
        g.drawLine(x+(70*(i-1)),715, x+(70*i), 715);
        g.drawString(""+i,  x+(70*i),730);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要动态重新绘制这个XY坐标系上的访问时间值.但我知道何时调用repaint().它将再次重新绘制()XY坐标.如何在不重新绘制XY坐标的情况下重新绘制访问时间值?

java swing jpanel repaint paintcomponent

0
推荐指数
1
解决办法
473
查看次数

在java中移动椭圆

我做了一个迷你代码绘制椭圆并相互链接,现在我尝试移动椭圆(圆圈),但我有一个问题(在编码)

// Panneau.java
public class Panneau extends JPanel {
    private int R = 20;
    private boolean isDrag = false;
    String text = "stack";
    int x = 250, y = 200;
    int height = 50, width = 50;
    Random Rnd = new Random();
    int rand=Rnd.nextInt();
    int r=Math.abs(rand%250);
    int r2=Math.abs(rand%250);
    public Panneau() {
        addMouseListener(new MouseAdapter() {
            @Override
           public void mousePressed(MouseEvent e) {
                if ((x<=e.getX() && x+R>=e.getX()) && ( y<=e.getY() && y+R>=e.getY())) {
                    moveVertex(e.getX(),e.getY());
                    isDrag = true;
                }
            }

            @Override
            public void mouseReleased(MouseEvent …
Run Code Online (Sandbox Code Playgroud)

java swing awt paintcomponent mouselistener

0
推荐指数
1
解决办法
3209
查看次数

在调用repaint()之前,Java swing不会显示g.drawImage()

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    super.paintComponent(g2);

    g2.fillRect(20, 20, 200, 200);
    g2.drawImage(map, 0, 0, 1004, 687, null);
}
Run Code Online (Sandbox Code Playgroud)

这是我的JPanel中paintComponent的代码.

当应用程序启动时,我可以看到矩形(仅在那里,因为我想检查是否正在调用paintComponent).但是在我通过调整窗口大小或按下强制重绘()的按钮强制重绘之前,地图不会绘制.

我尝试在几个地方调用validate(),因为有些答案表明,但它没有用.

java swing repaint drawimage paintcomponent

0
推荐指数
1
解决办法
279
查看次数

使用paintComponent在JFrame中镜像对象

我创建了一个类,它是一个“镜像”对象。类构造函数具有镜像坐标和方向。在这个类中也有一个paintComponent方法。我正在尝试在我的框架中使用此类创建一个镜像对象,并自动绘制带有坐标和方向的镜像。有“镜像”类。我可以这样做吗?

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JComponent;

@SuppressWarnings("serial")
    class Mirror extends JComponent{

        public static int xm, ym;
        public static boolean direction;

        public Mirror(int xmm, int ymm, boolean directionm){

            xm=xmm;
            ym=ymm;
            direction=directionm;;
            repaint();
        }

        public int getX(){
            return xm;
        }

        public int getY(){
            return ym;
        }

        public boolean getDirection(){
            return direction;
        }

        public int getIntDirection(){
            int a;

            if(direction==true){
                a=1;
            }else{
                a=0;
            }

            return a;
        }

        public void setDirection(boolean status){
            direction=status;
        }

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

java swing paintcomponent imageicon

0
推荐指数
1
解决办法
295
查看次数

我正在寻找一个向applet添加图像的好例子

我正在尝试将图像添加到我的applet中.我用谷歌搜索了这个,但我没有找到一个我理解的体面的例子.有谁知道我在哪里可以找到一个添加图像和applet的好例子?

我在网上得到了这个,但是当我运行applet时它没有显示我的图像.

   public class Lab5 extends JApplet {
        //Lab5(){}


        Image img;

        public void init() {
                img = getImage(getDocumentBase(), "img\flag0.gif");                 
        }


        public void paintComponent(Graphics g) {
            g.drawImage(img, 50, 50, this);
        }
}
Run Code Online (Sandbox Code Playgroud)

下面是我的HTML文件

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <applet code="Lab5.class" width= 250 height = 50></applet>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

java swing image paintcomponent

-1
推荐指数
1
解决办法
650
查看次数

Java:将背景图像添加到框架

可能重复:
java swing背景
图像在帧上绘制自己的缓冲图像

我试图在我的框架中添加背景图像,但我没有做过任何工作.

我设计了一个老虎机,它由几个面板组成.现在,我正在尝试为框架添加一个漂亮的背景.

我尝试使用paint方法.但是,由于我已经使用绘制方法来绘制卷轴图像,因此它不适用于背景.

我也尝试添加一个JLabel,但是当我这样做时会覆盖所有内容或被覆盖,具体取决于我如何调用它.以下是我的代码; 任何帮助都感激不尽:

import javax.swing.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import sun.audio.*;

public class SlotMachine extends JFrame {

    private Container c = getContentPane();

    private ImageIcon handleIcon = new ImageIcon("starWars/slot-handle.png");
    private ImageIcon quitIcon = new ImageIcon("starWars/quit2.jpg");
    private ImageIcon logoIcon = new ImageIcon("starWars/logo3.jpg");
    private ImageIcon BG = new ImageIcon("space.jpg");
    private JButton spin = new JButton("Spin", handleIcon);
    private JButton quit = new JButton("Quit", quitIcon);
    private JLabel logo = new JLabel(logoIcon);
    private JLabel bankTotal = …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel paintcomponent imageicon

-1
推荐指数
1
解决办法
9494
查看次数

扩展JPanel,继承了什么

所以我创建了一个名为BasePanel的抽象JPanel.在其中我使用双缓冲区代码,如下所示:

public void paint(Graphics g) {
    dbImage = createImage(getWidth(), getHeight());
    dbg = dbImage.getGraphics();
    paintComponent(dbg);
    g.drawImage(dbImage, 0, 0, this);
    repaint();
}

public void paintComponent(Graphics g) {
    g.setColor(Color.BLACK);
}
Run Code Online (Sandbox Code Playgroud)

然后当在另一个面板上扩展它时,我想知道如果我只覆盖paintComponent方法它仍然会加倍缓冲吗?所以我甚至不需要调用paint方法

一个例子

public class StartScreen extends BasePanel {
    @Override
    public void paintComponent(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getWidth(), getHeight());

        g.setColor(Color.WHITE);
        g.drawString("Animation Screen", 175, 150);;

        repaint();

    }

}
Run Code Online (Sandbox Code Playgroud)

java swing doublebuffered jpanel paintcomponent

-1
推荐指数
1
解决办法
39
查看次数

如何使用Java Swing绘制2d箭头?

我正在尝试使用Swing 2d绘制一些可旋转的箭头,在线提供了一些示例代码,因此我将它们复制并组合到一个应用程序中,但是3种方法的每种方法都存在问题:第一种方法不会旋转居中,其他2个箭头的方向不正确,有人可以告诉我如何修复它们吗?

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

public class Arrow_Test extends JPanel implements ChangeListener {
    Path2D.Double arrow = createArrow();
    double theta = 0;

    public void stateChanged(ChangeEvent e) {
        int value = ((JSlider) e.getSource()).getValue();
        theta = Math.toRadians(value);
        repaint();
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setStroke(new BasicStroke(6));
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        int cx = getWidth() / 2;
        int cy = getHeight() / 2;
        AffineTransform at = AffineTransform.getTranslateInstance(cx, cy);
        at.rotate(theta);
        at.scale(2.0, 2.0);
        Shape shape = at.createTransformedShape(arrow); …
Run Code Online (Sandbox Code Playgroud)

java swing jslider paintcomponent

-1
推荐指数
1
解决办法
4556
查看次数

paintComponent不工作java,

java swing,paintComponent在下面的代码中,它正在执行但是paintComponent函数没有工作,所以它的原因是什么.我是java的新手,所以犯了这些错误.

package practice;

    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    public class gui extends JPanel implements ActionListener  
    {
    JFrame frame;
    JButton button;
    public void paint(Graphics g)
    {
        super.paint(g);
        g.setColor(Color.black);
        g.fillRect(0, 0, getWidth(), getHeight());
    }
    public void go()
    {
        frame=new JFrame();
        button=new JButton("click me");
        frame.getContentPane().add(button);
        button.addActionListener(this);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(2000,2000);
        frame.setVisible(true);

    }
    public static void main(String[] args)
    {

    gui g=new gui();
    g.go();

    }

    public void actionPerformed(ActionEvent e)
    {

        button.setText("mmmmm");
    }

    } 
Run Code Online (Sandbox Code Playgroud)

java swing paintcomponent

-1
推荐指数
1
解决办法
298
查看次数

如何使用GradientPaint每秒绘制jpanel?

我有两个类..类面板扩展JPanel,

和另一个每秒控制那个jpanel的油漆的类..(我用swing.Timer)

我的代码失败了

继续我到目前为止尝试..

类面板扩展了JPanel:

@Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Control control = new Control(this,g);
        repaint();
    }
Run Code Online (Sandbox Code Playgroud)

班级控制:

public class Control implements ActionListener{

    private int XX=0;
    private int YY=0;

    private Graphics2D g2;
    private JPanel panel;

    Timer tim = new Timer(1000, this);


    public Control(JPanel el,Graphics g) {


        this.g2=(Graphics2D)g.create();
        this.panel=el;
        tim.start();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        XX++;
        YY++;

    /////////////////////
    //my priority 
        GradientPaint gp = new GradientPaint(XX, YY, Color.BLUE, panel.getWidth(), panel.getHeight(), Color.WHITE);
    //////////////////////

        g2.setPaint(gp);
        g2.fillRect(0, 0, panel.getWidth(), panel.getHeight());
        panel.repaint(); …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel paintcomponent

-3
推荐指数
2
解决办法
974
查看次数

如果通过递归函数调用paintComponent不起作用?

  1. 我希望看到所有的Points一个接一个,但我看到只能看到1分.看到所有的变化,我改变了Points什么?
  2. System.out你可以看到10次"设置"然后2次"paintComponent".在调用每个时间集之后我应该改变什么呢?它改变了"paintComponente"?

================================================== ================================

public class exampe extends JPanel  
{
    int x; 
    int y;

    public void paintComponent(Graphics g) 
    {
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;
        g2.fillOval(x-2,y-2,4,4);
        System.out.println("paintComponent");        
    }

    public void set(int X, int Y)
    {
        x = X;
        y = Y;
        System.out.println("set");
        super.repaint();
    }

    public static void main(String args[]) 
    {   
        int e=1;

        JFrame frame = new JFrame("TEST");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        exampe ex= new exampe();
        JScrollPane scroll = new JScrollPane(ex);
        frame.getContentPane().add(scroll);

        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        for(int i=0; …
Run Code Online (Sandbox Code Playgroud)

java swing paintcomponent

-5
推荐指数
1
解决办法
1926
查看次数