我正在尝试向我的绘图程序添加文本,但我遇到了一些问题。 这就是我想要的:一个人点击框架中的某个位置,输入对话框显示该人可以输入文本的位置,单击确定后,文本将显示在单击的位置。 首先,在按下OK后,我得到了左上角显示的对话框副本。像这样:inputdialog
其次:第一次添加文本工作正常,但第二次输入的对话格显示两次,我必须在文本显示在框架之前填写文本两次。第三次我必须做3次等等......
这是我的代码的一部分:
public class MyTexfield implements drawable {
private double x1, y1, x2, y2;
public void MyTextfield() {
}
public void MyTextfield (double x1, double y1, double x2, double y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
@Override
public void draw(Graphics2D g) {
double x = getStartX();
double y = getStartY();
String text = JOptionPane.showInputDialog("Your text here", null);
g.drawString(text, (int)x, (int)y);
}
public class DrawPanel extends JPanel {
Color fillColor = null;
List<drawable> shapesList = new ArrayList<drawable>();
int prevx;
int prevy;
DrawPanel() {
super();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Cast the graphics object to type Graphics2D
Graphics2D g2d = (Graphics2D) g;
for (drawable s : shapesList)
s.draw(g2d);
}
public void addText(int x, int y, int z, int a)
{
MyTexfield textField = new MyTexfield();
shapesList.add(textField);
textField.setCoordinates(x,y,z,a);
repaint();
}
希望有人可以提供帮助!