InputDialog多次出现

时间:2017-06-01 12:34:59

标签: java swing text dialog paint

我正在尝试向我的绘图程序添加文本,但我遇到了一些问题。 这就是我想要的:一个人点击框架中的某个位置,输入对话框显示该人可以输入文本的位置,单击确定后,文本将显示在单击的位置。 首先,在按下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();
        }

希望有人可以提供帮助!

0 个答案:

没有答案