【发布时间】:2010-11-18 15:37:50
【问题描述】:
我想知道如何在我的 JFrame 上的某个 x,y 坐标上制作一个点/像素。
有人知道一些简单的代码吗?
【问题讨论】:
标签: java
我想知道如何在我的 JFrame 上的某个 x,y 坐标上制作一个点/像素。
有人知道一些简单的代码吗?
【问题讨论】:
标签: java
我创建了一个小示例程序:
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?
【讨论】:
简单性和实用性之间的最佳折衷可能是扩展 JPanel,并覆盖paintComponent(Graphics)。然后将该面板放在您的 JFrame 中(具有适当的布局。这里有一些使用说明:http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JComponent.html#paintComponent%28java.awt.Graphics%29
【讨论】:
见
void update(Graphics g)
JFrame 类的方法。 图形 API(如画点、画线、画弧等)在 Graphics 类中。
编辑:http://www.javadb.com/drawing-a-line-using-java-2d-graphics-api
【讨论】:
问问自己您是否真的想要扩展JFrame 或JPanel。如果您决定不这样做,那么您可以创建一个基本的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);
}
}
【讨论】:
发送图形参考和轴 x 和 y 来制作一个像素:
private void doPixel(Graphics g, int x, int y){
g.fillRect(x, y, 1, 1);
}
【讨论】: