在java中绘制点



嘿,我应该获取城市列表和x和y坐标并绘制它们。我用x和y坐标的顶点来表示所有的城市。现在我试着把它们画出来,但我似乎看不出我做错了什么,我没有得到一个错误。这是我第一次使用GUI,所以这可能是一个愚蠢的错误。

 import javax.swing.JTextField;
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import java.awt.geom.*;
 import java.util.Arrays;

 public class GraphMaker{

public GraphMaker(Vertex[] a )
  {
    JFrame frame = new JFrame();
    String start = "Start";
    int columns=20;
    String end = "End";
    JTextField startCity = new JTextField(start,columns);
    JTextField endCity = new JTextField(end,columns);
    JButton button = new JButton("Find Path");
    //button.addActionListener(button);
    int length = a.length;
    Vertex current = a[0];
    CityComponent cityPanel = new CityComponent(current);
    /*for(int i=0; i < length; i++){
        Vertex current = a[i];
        g2.draw(new Line2D.Double(x,y,x,y));
    }*/
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    panel.add(startCity);
    panel.add(endCity);
    panel.add(button);
    frame.setLayout(new BorderLayout());
    frame.add(cityPanel,BorderLayout.CENTER);
    frame.add(panel,BorderLayout.SOUTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);

}
 public void actionPerformed(ActionEvent e) {
        return;
 }
}
import javax.swing.*;
import java.awt.*;
public class CityComponent extends JComponent {
private Vertex m;
private int x = 0;
private int y = 0;
public CityComponent(Vertex m) {
   this.m = m;
}
public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    m.draw(g2);
}
} 

import java.awt.*;
import java.awt.geom.*;
import java.util.*;
public class Vertex{
public String element;
public Double x;
public Double y;

public Vertex(String city, String a, String b){
    this.element = city;
    this.x = Double.parseDouble(a);
    this.y = Double.parseDouble(b);
}
public void draw(Graphics2D g2){

Point2D.Double r1 = new Point2D.Double(x/10, y/10);
Line2D.Double line = new Line2D.Double(r1,r1);
  g2.draw(line);
}
}

您正在尝试使用不存在的图形对象。在我看来,你有两个选择:

  • 您可以在扩展JPanel的类的paintComponent(Graphics g)方法中绘制,使用for循环迭代顶点,并使用JVM提供的Graphics对象进行绘制…
  • 或者您可以在BufferedImage中绘制,使用通过调用BufferedImage上的getGraphics()获得的图形对象。然后,您可以将图像放入ImageIcon中,然后将Icon放入JLabel中。
  • 或者你可以通过在JPanel的paintComponent方法中绘制上面创建的BufferedImage来完成上述操作的组合。
  • 无论你做什么,不要使用在Swing组件上调用getGraphics()获得的图形对象。我已经警告你了。

编辑
我现在看到你的CityComponent类扩展了JComponent,现在看到你应该用这个绘图。关键是将正确的顶点传递给它,我不知道你做的是否正确,因为我们没有看到你是如何构造GraphMaker类的。

你可以告诉我们哪个代码是你的,是给你的,并告诉我们你的确切要求。您的一些代码似乎仍然有点不对劲。

相关内容

  • 没有找到相关文章

最新更新