【发布时间】:2014-05-17 18:03:58
【问题描述】:
我遇到了这段代码,我一直在玩它,但是我试图绘制的点似乎在不正确的地方。我希望能够像图表一样绘制,所以原点 (0,0) 应该在左下角,并且点应该相对于它绘制,可以帮助我吗?
package graphtest;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.Graphics;
import java.util.*;
public class Scatterplot extends javax.swing.JFrame {
private List points = new ArrayList();
public Scatterplot() {
super("Scatterplot");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
points.add(new Point2D.Float(1, 4));
points.add(new Point2D.Float(2, 10));
points.add(new Point2D.Float(3, 12));
//points.add(new Point2D.Float(3, 10));
// points.add(new Point2D.Float(4, 12));
JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
//g.translate(0, 0);
for(Iterator i=points.iterator(); i.hasNext(); ) {
Point2D.Float pt = (Point2D.Float)i.next();
g.drawString(".", (int)pt.x, (int)pt.y);
}
}
};
setContentPane(panel);
setBounds(10, 10, 200, 200);
setVisible(true);
}
public static void main(String[] args) {
new Scatterplot();
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
}
【问题讨论】:
-
在进行任何绘图之前,请确保您致电
super.paintComponent。坐标将相对于它们被绘制的组件,而不是框架......