Java制作'点/像素'在swing / awt中

时间:2010-11-18 15:37:50

标签: java

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

任何人都知道一些简单的代码吗?

5 个答案:

答案 0 :(得分:7)

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

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(); 
    }
}

你也可以使用更好或更好的paintComponents方法。但是你必须确保它被调用。如果您遇到问题且未被调用,则可以使用以下解决方案:Why is paint()/paintComponent() never called?

答案 1 :(得分:1)

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

答案 2 :(得分:1)

void update(Graphics g) 

JFrame类的方法。 图形API(如绘制点,绘制线,绘制弧等)在Graphics类中。

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

答案 3 :(得分:0)

问问自己真的是否要扩展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);
    }
}

答案 4 :(得分:0)

发送图形参考和轴x和y以制作像素:

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