Java 如何使用imageArray将每个单词的图像转换为另一个单词
我制作了5个java类,它们的目标是将英语翻译成法语,并在单击Jbutton时设置在Jfield1中写入的每个单词的图像。 我的小程序将JField1中的每个英语单词翻译成JField2中的法语单词。我还添加了另外两个类(ImageImplement和ImageInFrame)来设置图像,但不幸的是没有任何效果。我真的不知道如何使用imageArray。 请帮帮我 对不起,我的英语不是很好 这是我的小程序 我的第一堂课是StringArrayEnglishWord 公共类StringArrayEnglishWords扩展了JPanel{Java 如何使用imageArray将每个单词的图像转换为另一个单词,java,arrays,swing,Java,Arrays,Swing,我制作了5个java类,它们的目标是将英语翻译成法语,并在单击Jbutton时设置在Jfield1中写入的每个单词的图像。 我的小程序将JField1中的每个英语单词翻译成JField2中的法语单词。我还添加了另外两个类(ImageImplement和ImageInFrame)来设置图像,但不幸的是没有任何效果。我真的不知道如何使用imageArray。 请帮帮我 对不起,我的英语不是很好 这是我的小程序 我的第一堂课是StringArrayEnglishWord 公共类StringArrayE
String[] names;
Graphics2D g2d;
public StringArrayEnglishWords(){
EnglishWords();
// drawNames();
}
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
}
public void EnglishWords(){
names=new String[16];
names[0]="Tomatoes";
names[1]="Chairs";
names[2]="Car";
names[3]="Computer";
names[4]="Flowers";
names[5]="Family";
names[6]="Sister";
names[7]="Husband";
names[8]="God";
names[9]="Book";
names[10]="Watch";
names[11]="Pencil";
names[12]="Bottle";
names[13]="Map";
names[14]="Wife";
names[15]="Bag";
}
public void drawNames(){
for (int i=0; i<names.length; i++){
g2d.drawString(names[i], 50, (1+i)*16);
}
}
public int indexOfWord(String userInput)
{
for(int i=0;i<names.length;i++)
{
if(userInput.equals(names[i])){return i;}
}
return -1;
}
String[] names2;
Graphics2D g2d;
public StringArrayFrenchWords(){
FrenchWorld();
// drawNames();
}
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
}
public void FrenchWorld(){
names2=new String[16];
names2[0]="Tomate";
names2[1]="Chaise";
names2[2]="Voiture";
names2[3]="Ordinateur";
names2[4]="Fleurs";
names2[5]="Familles";
names2[6]="Soeur";
names2[7]="Epoux, Mari";
names2[8]="Dieu";
names2[9]="Livre";
names2[10]="Montre, Regarder";
names2[11]="Crayon";
names2[12]="Bouteille";
names2[13]="Carte,plan";
names2[14]="Femmme";
names2[15]="Sac";
}
public void drawNames(){
for (int i=0; i<names2.length; i++){
g2d.drawString(names2[i], 50, (1+i)*16);
}
}
Image img;
public ImageImplement(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
我的两个类用于使用JFame和imageArray设置ImageBu:ImageInFrame和ImageImplement
公共类ImageInJframe扩展了JFrame{
JFrame Frame;
Image[] pics;
String[] names = {"apple.jpg", "bags.jpg", "bathroom.jpg", "battled.jpg", "car.png",
"chairs.jpg", "Computer.jpg", "family.jpg", "flowers.jpg", "god.jpg", "house.png", "map.jpg"
, "men.jpg", "pencil.jpg", "sisters.jpg", "tomato.jpg", "watch.jpg", "women.jpg", "book.gif"};
final int NUM_PICS=names.length;
Graphics g;
public static void main(String args[])
{
new ImageInJframe().start();
}
public void start()
{
ImageImplement panel = new ImageImplement(new ImageIcon(String.valueOf(pics)).getImage());
add(panel);
setVisible(true);
setSize(400,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setImage();
}
public void setImage() {
pics = new Image[NUM_PICS];
}
public int indexOfImage(String userInput)
{
for(int i=0;i<pics.length;i++)
{
if(userInput.equals(pics[i])){return i;}
}
return -1;
}
绘制是按需进行的,当调用
paintComponent
时,您需要重新绘制UI的当前状态。也许您应该从查看和了解有关绘制工作原理的更多细节开始
基本上,从paintComponent
,您需要调用draw
,但是您应该将传递给paintComponent
方法的Graphics
上下文传递给它。维护对未创建的Graphics
上下文的引用是危险和不明智的
到
假设图像文件位于执行程序的当前目录中,那么它应该可以工作。如果它们与类文件一起包含在包中,那么您需要使用class\getResource
获取对图像的引用,并将结果URL
传递到ImageIcon
您的ImageImplement
面板什么也没做,所以即使它有一个合适的图像来显示,它也不会显示任何东西
String.valueOf(pics)
毫无意义
你已经发布了一大堆看起来不相关的代码,很难知道你指的是什么问题
这个
ImageLabel.setIcon((Icon) img);
毫无意义,img
是ImageInJFrame
的一个实例,它与图标的关系如何
我完全不知道你想做什么绘画是按需进行的,当调用你的paintComponent
时,你需要重新绘制UI的当前状态。也许你应该先看一看,了解更多关于绘画工作原理的细节
基本上,从paintComponent
,您需要调用draw
,但是您应该将传递给paintComponent
方法的Graphics
上下文传递给它。维护对未创建的Graphics
上下文的引用是危险和不明智的
到
假设图像文件位于执行程序的当前目录中,那么它应该可以工作。如果它们与类文件一起包含在包中,那么您需要使用class\getResource
获取对图像的引用,并将结果URL
传递到ImageIcon
您的ImageImplement
面板什么也没做,所以即使它有一个合适的图像来显示,它也不会显示任何东西
String.valueOf(pics)
毫无意义
你已经发布了一大堆看起来不相关的代码,很难知道你指的是什么问题
这个
ImageLabel.setIcon((Icon) img);
毫无意义,img
是ImageInJFrame
的一个实例,它与图标的关系如何
我完全不知道你想做什么请编辑你的帖子,包括对预期行为和你看到的内容的描述,以及根据需要进行的任何stacktracePainting,当调用你的paintComponent
时,你需要重新绘制UI的当前状态。也许你应该先看一看有关绘画工作原理的详细信息,请使用代码和代码片段的代码格式、HTML/XML或输入/输出等结构化文档。要执行此操作,请选择文本并单击{}
按钮位于消息发布/编辑表单顶部。2)为了更快地获得更好的帮助,请发布或。我想知道如何使用另一个类和和imageArray设置每个世界的图像。如果您忘记了imageImplemnt和ImageInFrame类,我如何使用有助于e要在点击JButton后在JField1中显示每个英文单词的图像,请编辑您的帖子,包括预期行为的描述和您看到的内容,以及任何stacktracePainting,当调用paintComponent
时,您需要重新绘制UI的当前状态。可能您需要应该先看一看,并了解有关绘画工作原理的更多详细信息1)请对代码和代码片段、HTML/XML或输入/输出等结构化文档使用代码格式。要执行此操作,请选择文本并单击{}
按钮位于消息发布/编辑表单顶部。2)为了更快地获得更好的帮助,请发布或。我想知道如何使用另一个类和和imageArray设置每个世界的图像。如果您忘记了imageImplemnt和ImageInFrame类,我如何使用有助于在点击JButton后,要使每个英文单词的图像出现在JField1中,这意味着我必须将ImageInFrame类更改为您编写的?我做了您向我展示的修改,但我不知道是否必须删除一个类?您知道我如何仅使用一个类来设置图像并删除ImageInFrame和imageimplement吗?你如何使用ImageArray进行扫描?真正的问题是为什么?为什么
ImageImplement panel = new ImageImplement(new ImageIcon(String.valueOf(pics)).getImage());
add(panel);
JLabel panel = new JLabel(new ImageIcon(names[0]).getImage());
add(panel);
ImageLabel.setIcon((Icon) img);