2014-03-02 25 views
0

所以我在java中製作GUI。 說我有一個構造函數方法,說在Java GUI中更改圖片

 public class glmb extends JLabel implements ActionListener { 
      public glmb(){ 
      Container C= getContentPane(); 
      C.setLayout(null); 
        myLabel.setBounds(0,0,30,30); 
        myLabel.setBounds(30,0,30,30); 
      C.add(myLabel); 
      C.add(myButt); 
      MyButt.addActionListener(this); 
        setSize(400,400); 
        setVisible(true); 
      }} 

我有一個JLabel帶班內一個ImageIcon:

  JLabel myLabel =new JLabel(new ImageIcon("mypic1.jpg")); 

與一個動作偵聽器的按鈕,這將使得JLabel的myLabel改變圖片:

   if(e.getSource()==myButt) 
      { myLabel =new JLabel(new ImageIcon("mypic2.jpg")); setSize(50,50);} 

我如何在JFrame中的畫面更改後,我按下按鈕,按鈕的作品,因爲幀大小改變(見的setSize(50,50))?謝謝!!!還是新的這裏JAVA,哈哈

+0

您已將引用更改爲myLabel,它不再指向屏幕上的內容,所以您對此做了什麼,它永遠不會改變屏幕上顯示的內容。相反,只需使用對myLabel的引用並使用setIcon來更改其圖像。 – MadProgrammer

+0

空佈局很少是構建動態和便攜式用戶界面的答案,因爲每個系統都有自己的字體指標和渲染差異。你應該考慮根據需要使用適當的佈局管理器或複合佈局,並讓API處理這些骯髒的細節 – MadProgrammer

+0

MadProgrammer,我不明白你的意思(我在高中14歲),是的,但是比如setSize工作,框架改變了它的大小,那麼,如何將JLabel添加到容器中(如上所示)。我在容器中添加了標籤,然後將該圖像設置爲可見。如何在同一個容器中再次添加JLabel? – AkihiroSato

回答

3

而不是使用

myLabel =new JLabel(new ImageIcon("mypic2.jpg"));

使用

myLabel.setIcon(new ImageIcon("mypic2.jpg"));

如果我沒有理解錯這應該爲你工作。

+0

是的!非常感謝你!!!!這裏仍然是編程新手,非常感謝您的幫助! – AkihiroSato

+0

沒問題,我自己還是個新人 – mig