我使用NetBeans的圖形的GUI創建界面,我興趣建立300通過300平方用小圓點表示該正方形內的位置的自定義位置。 JPanel似乎是一個開始的好地方,它給了我需要的座標來指定繪製點的位置;但我不知道如何創建我的工作範圍內這樣的活動點。圖形與的JFrame /的JPanel/Netbeans的
我明白,一個解決辦法是關閉佈局管理器,但它似乎並不像一個很好的解。我很欣賞:-)
我使用NetBeans的圖形的GUI創建界面,我興趣建立300通過300平方用小圓點表示該正方形內的位置的自定義位置。 JPanel似乎是一個開始的好地方,它給了我需要的座標來指定繪製點的位置;但我不知道如何創建我的工作範圍內這樣的活動點。圖形與的JFrame /的JPanel/Netbeans的
我明白,一個解決辦法是關閉佈局管理器,但它似乎並不像一個很好的解。我很欣賞:-)
任何指導或鏈接到有用的資源可能是這樣
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.*;
import java.util.ArrayList;
public class PathIteratorTest {
public static void main(String[] args) {
JFrame frame = new JFrame("FlatteningPathIterator test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Shape s=new Ellipse2D.Float(10,10,200,100);
PaintPanel app = new PaintPanel(s);
JScrollPane scroll = new JScrollPane(app);
frame.getContentPane().add(scroll);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
static class PaintPanel extends JPanel {
FlatteningPathIterator iter;
ArrayList<Point> points;
int index=0;
public PaintPanel(Shape s) {
iter=new FlatteningPathIterator(s.getPathIterator(new AffineTransform()), 1);
points=new ArrayList<Point>();
float[] coords=new float[6];
while (!iter.isDone()) {
iter.currentSegment(coords);
int x=(int)coords[0];
int y=(int)coords[1];
points.add(new Point(x,y));
iter.next();
}
Timer timer=new Timer(50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
index++;
if (index>=points.size()) {
index=0;
}
repaint();
}
});
timer.start();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.blue);
Point p=points.get(index);
g.fillOval(p.x, p.y, 5,5);
}
}
}
非常感謝你!用我發現有關如何將Swing組件的定製子類(http://wiki.netbeans.org/FaqFormUsingCustomComponent),另一個很好的例子,該信息(http://www.alnaja7.org/Programmer/393/GUI合併/Extend%20JPanel%20to%20create%20new%20components.htm)我能夠做出正是我想要的那種面板:-) – tor 2012-02-23 18:05:20
couldbe一個很好的問題+1,更好的將被張貼[SSCCE(http://sscce.org/) – mKorbel 2012-02-23 07:50:46