這是我的任務。重繪()方法不重繪需要的東西
我必須生成4張隨機卡片。之後,當按下刷新按鈕時,卡應該再次隨機化。我已經實現了像這樣的repaint()方法,但它不會改變卡的顯示方式。
public class FourCards extends JFrame {
JLabel slot1 = new JLabel(getImage());
JLabel slot2 = new JLabel(getImage());
JLabel slot3 = new JLabel(getImage());
JLabel slot4 = new JLabel(getImage());
public FourCards() {
JPanel CardsPanel = new JPanel(new GridLayout(1,4,5,5));
add(CardsPanel);
CardsPanel.add(slot1);
CardsPanel.add(slot2);
CardsPanel.add(slot3);
CardsPanel.add(slot4);
JButton jbtRefresh = new JButton("Refresh");
JPanel ButtonPanel = new JPanel();
this.add(ButtonPanel, BorderLayout.SOUTH);
ButtonPanel.add(jbtRefresh);
jbtRefresh.addActionListener(new ButtonListener());
}
public ImageIcon getImage() {
ImageIcon temp = new ImageIcon("C:/resized/" + (int)(Math.random() * 52) + ".png");
return temp;
}
public void update() {
slot1 = new JLabel(getImage());
slot2 = new JLabel(getImage());
slot3 = new JLabel(getImage());
slot4 = new JLabel(getImage());
}
public static void main(String[] args) {
FourCards frame = new FourCards();
frame.setTitle("Random 4 cards");
frame.setSize(600,280);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class ButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
update(); // get new images
repaint();
}
}
}
你所做的完全等同於「把水放入4桶」,「把所有4桶水放入井中」。後來; 「添加毒藥桶」,並且當井沒有中毒時會感到驚訝。記住一個變量只是一個地方存儲的東西,沒有更多 – 2014-12-07 19:11:55