gpt4 book ai didi

Java如何让drawstring打印一些东西而不在paintComponent的下一次迭代中被替换

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:48 24 4
gpt4 key购买 nike

所以我有一个带有文本字段的代码,当按下按钮并输入一些文本时,该文本将出现在面板上单击的位置。如何做到这一点,以便每次单击面板上的某个位置时,面板上的旧字符串不会移动到新位置,并且会创建一个新字符串并将其添加到现有文本中?

最佳答案

这是我写的代码。它工作完美。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class APP extends Applet implements MouseListener{

TextField text;
public ArrayList<Integer> X=new ArrayList<Integer>();
public ArrayList<Integer> Y=new ArrayList<Integer>();

@Override
public void init(){
text=new TextField(10);
add(text);
addMouseListener(this);
text.setText("");
}

@Override
public void paint(Graphics g){
String s=text.getText();
for(int i=0;i<X.size();i++)
g.drawString(s,(X.get(i)).intValue(), (Y.get(i)).intValue());
}

@Override
public void MouseClicked(MouseEvent m){
X.add(new Integer(m.getX()));
Y.add(new Integer(m.getY()));
repaint();
}

/*Compulsory overriding of abstract methods of MouseListener interface*/

@Override
public void mouseEntered(MouseEvent m){}

@Override
public void mouseExited(MouseEvent m){}

@Override
public void mousePressed(MouseEvent m){}

@Override
public void mouseReleased(MouseEvent m){}
}

工作原理:在文本框中输入文本,然后按 Enter 键。然后单击您想要显示文本的位置,它就会显示,而不会删除之前绘制的字符串。 (逻辑请引用我对你问题的评论。)

编辑

注意:如果您想删除 Canvas 中的所有字符串并从新屏幕中使用相同或不同的文本开始,请在 paint() 方法的第一行后面添加以下代码段:

if(s.equals("")){
X=new ArrayList<Integer>();
Y=new ArrayList<Integer>();
}

只需清空文本框并按 Enter 键即可重置 Canvas 。 :-)

关于Java如何让drawstring打印一些东西而不在paintComponent的下一次迭代中被替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35939052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com