【问题标题】:Java making a 'dot/pixel' In swing/awtJava 在 swing/awt 中制作“点/像素”
【发布时间】:2010-11-18 15:37:50
【问题描述】:

我想知道如何在我的 JFrame 上的某个 x,y 坐标上制作一个点/像素。

有人知道一些简单的代码吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    我创建了一个小示例程序:

    public class Test extends JFrame {
    
        public Test() {
            this.setPreferredSize(new Dimension(400, 400));
            this.pack();
            this.setVisible(true);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    
        @Override
        public void paint(Graphics g) {
            super.paint(g);
    
            // define the position
            int locX = 200;
            int locY = 200;
    
            // draw a line (there is no drawPoint..)
            g.drawLine(locX, locY, locX, locY); 
        }
    
        public static void main(String[] args) {
            Test test = new Test(); 
        }
    }
    

    你也可以使用 update 或 paintComponents 方法,这样会更好。但是你必须确保它被调用。如果您有问题并且没有被调用,您可以使用以下解决方案:Why is paint()/paintComponent() never called?

    【讨论】:

    • 简洁的小例子,谢谢。我必须添加要运行的导入: import javax.swing.*;导入 java.awt.Graphics;导入 java.awt.Dimension;
    • 谢谢,您知道如何设置线/点/点的颜色吗? :)
    • 如何使用双精度而不是整数?
    【解决方案2】:

    简单性和实用性之间的最佳折衷可能是扩展 JPanel,并覆盖paintComponent(Graphics)。然后将该面板放在您的 JFrame 中(具有适当的布局。这里有一些使用说明:http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JComponent.html#paintComponent%28java.awt.Graphics%29

    【讨论】:

      【解决方案3】:

      void update(Graphics g) 
      

      JFrame 类的方法。 图形 API(如画点、画线、画弧等)在 Graphics 类中。

      编辑:http://www.javadb.com/drawing-a-line-using-java-2d-graphics-api

      【讨论】:

        【解决方案4】:

        问问自己您是否真的想要扩展JFrameJPanel。如果您决定不这样做,那么您可以创建一个基本的JComponent。根据您使用的布局管理器,您可能会获得不同的成功。

        public class PixelComponent extends JComponent
        {
            private Color color;
        
            public PixelComponent(Color color)
            {
                super();
                this.color = color;
            }
        
            public PixelComponent()
            {
                this(Color.BLACK);
            }
        
            public void paintComponent(Graphics g)
            {
                super.paintComponent(g);
        
                g.setColor(color);
                g.fillRect(0, 0, 1, 1);
            }
        }
        

        【讨论】:

          【解决方案5】:

          发送图形参考和轴 x 和 y 来制作一个像素:

          private void doPixel(Graphics g, int x, int y){ g.fillRect(x, y, 1, 1); }

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-08-25
            • 2013-03-23
            • 1970-01-01
            • 2020-07-31
            • 2017-05-08
            • 2011-12-03
            • 2015-12-02
            • 2023-03-12
            相关资源
            最近更新 更多