我有一个名为'AmountWrongGuessed‘的值,它给出了用户猜单词时错误猜测的数量。
每次在数组列表中找不到这个单词时,AmountWrongGuessed goes ++。(对此进行了测试,并使其工作正常)
现在的问题是,每次AmountWrongGuessed上升1次,它就应该显示一个ImageIcon。
但它总是显示最后一个图像图标,并跳过其他图标。
我不使用布局管理器(它的设置为null,如果这在总图片setLayout =null中有任何不同)
同时,当初始化这个游戏时,当你猜到这个游戏是默认的0时,它也不会显示第一个图像图标。(我以前使用不同的标签将每个图标添加到相同的位置上,但随后出现了问题,只显示了第一个图像,没有任何更改)。
public HrView(Hrgame hg) {
this.hg = hg;
CreateComponents();
SetLayoutComponents();
UpdateComponents();
AddListeners();
}图像的制作:
private void CreateComponents() {
hang0 = new ImageIcon("hang0.gif");
lblHang = new JLabel(hang0);
lblHang.setLocation(60, -10);
lblHang.setSize(200, 200);
hang1 = new ImageIcon("hang1.gif");
lblHang = new JLabel(hang1);
lblHang.setLocation(60, -10);
lblHang.setSize(200, 200);
hang2 = new ImageIcon("hang2.gif");
lblHang = new JLabel(hang2);
lblHang.setLocation(60, -10);
lblHang.setSize(200, 200);
}
private void AddListeners()
{
btnCheck.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
hg.Input(tfToGuessInput.getText().toLowerCase());
Pictures();
lblHang.updateUI();
}
});
}
private void Pictures()
{
//works, does increment
System.out.println(hg.getAmountWrongGuessed());
if (hg.getAmountWrongGuessed() == 0) {
add(lblHang);
}
if (hg.getAmountWrongGuessed() == 1) {
add(lblHang);
}
if (hg.getAmountWrongGuessed() == 2) {
add(lblHang);
}
}发布于 2010-11-28 08:35:50
在CreateComponents()之后,属性lblHang引用您最后创建的标签(包含图像hang2的标签)。为了以后使用这三个标签,你需要有三个标签,然后你可以在Pictures()中使用。
顺便说一句,在Java中,命名约定是方法名以小写字符开头。
发布于 2010-11-28 09:54:44
import javax.swing.*;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
public class testgui{
private static int flag = 1;
public static void main(String[] args){
final JLabel label = new JLabel("",new ImageIcon("0.jpg"),JLabel.CENTER);
final JLabel label1 = new JLabel("",new ImageIcon("1.jpg"),JLabel.CENTER);
final JLabel label2 = new JLabel("",new ImageIcon("2.jpg"),JLabel.CENTER);
final JFrame frame = new JFrame();
final JPanel panel = new JPanel();
frame.add(panel,BorderLayout.CENTER);
frame.setVisible(true);
final JButton button = new JButton("Next");
frame.add(button,BorderLayout.SOUTH);
panel.add(label);
frame.pack();
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(flag==0){
System.out.println("0.jpg");
//label image, flag increment
flag = flag+1;
panel.removeAll();
panel.add(label);
frame.pack();
} else if(flag==1){
System.out.println("1.jpg");
//label1 image, flag increment
flag = flag+1;
panel.removeAll();
panel.add(label1);
frame.pack();
} else if (flag==2){
System.out.println("2.jpg");
//label2 image, reset flag to 0
flag = 0;
panel.removeAll();
panel.add(label2);
frame.pack();
}
else{
System.out.println("Wrong flag number !");
}
panel.validate();
panel.updateUI();
}
});
}
}我认为,如果您想要切换图像,使用jlabels,上述代码将有所帮助。这将有助于旋转包含图像的jlabels,但是这些代码并没有被优化。
https://stackoverflow.com/questions/4295971
复制相似问题