我想知道如何在我的JFrame上的某个x,y坐标上制作点/像素。
任何人都知道一些简单的代码吗?
答案 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)
问问自己真的是否要扩展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);
}
}
答案 4 :(得分:0)
发送图形参考和轴x和y以制作像素:
private void doPixel(Graphics g, int x, int y){
g.fillRect(x, y, 1, 1);
}