2013-11-03 103 views
0

我想在事件發生時在屏幕上添加圖像。在我的情況下,這是來自一個被點擊的按鈕。我試圖自己解決這個問題,但圖像沒有出現。我不知道什麼是錯的。如何從一個事件在屏幕上放置圖像?

我的代碼:

JButton button2 = new JButton("+"); 
button2.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     //Execute when button is pressed 
     System.out.println("button #2 working"); 
     label2 = new JLabel(new ImageIcon(this.getClass().getResource("50.png")));  
     label2.setLocation(10, 60); 
     label2.setSize(300, 532); 
     add(label2); 
     //? Not working 
    } 
}); 

button2.setSize(50, 40); 
button2.setFont(new Font("Arial", 1, 20)); 
button2.setLocation(110, 592); 
button2.setBackground(Color.ORANGE); 
content.add(button2); 
+0

嘗試添加'revalidate();'你在哪裏發表評論'//?不工作' –

+0

revalidate()只處理更新佈局,另一方面repaint()處理重繪或刷新視圖(組件)。爲此給出一個快速的比喻將是一個簡單的JTextField。無論何時在文本字段中輸入內容,Swing都會自動爲您調用repaint(),以便刷新或重新繪製組件以查看更改(即鍵入的字符) –

+0

我想出了一個簡單的解決方案。我在屏幕上放置了一個圖像,並將其設置爲不可見。 image1.setVisible(假);點擊按鈕時,圖像將與image1.setVisible(true)一起顯示; –

回答

0

其實我也做過類似你想達到什麼樣的東西。但是,我通過使用其他方法來實現此目的。你可以創建一個類MyPanel,它擴展了JPanel並覆蓋了paintComponent()方法。在paintComponent()方法中,您可以調用g.drawImage(yourImage,0,0,null);將圖像添加到面板。然後創建一個MyPanel的實例並在GUI上隨意添加它。此外,不要忘記在點擊按鈕之後調用repaint(),否則您將看不到更改。

相關問題