2013-03-15 59 views
2

簡單的問題給你,我輸入這個代碼,我看到組合框和標籤,但選擇組合後,標籤應與圖像。這不會發生......我肯定忘了什麼事combo getSelectedItem,但然後

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class ChooseFrame extends JFrame 
{ 
    public ChooseFrame() 
    { 
     labelLeagueImage = new JLabel("Liga"); 
     comboLeague = createComboLeague(); 

     class ChooseListener implements ActionListener 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       String league = (String)comboLeague.getSelectedItem(); 

       if (league.equals("Italia - Serie A")) 
       { 
        ImageIcon icon = new ImageIcon("Italia - Serie A.png"); 
        labelLeagueImage.setIcon(icon); 
       } 

      } 
     } 

     listener = new ChooseListener(); 
     leaguePanel = new JPanel(); 
     leaguePanel.add(comboLeague); 
     leaguePanel.add(labelLeagueImage); 
     add(leaguePanel); 
     setSize(FRAME_WIDTH, FRAME_HEIGHT); 
    } 

    public JComboBox createComboLeague() 
    { 
     JComboBox combo = new JComboBox(); 
     combo.addItem("Select a league"); 
     combo.addItem("Italia - Serie A"); 
     combo.addItem("Italia - Serie B"); 
     combo.addActionListener(listener); 
     return combo; 
    } 

    private JPanel leaguePanel; 
    private JComboBox comboLeague; 
    private JLabel labelLeagueImage; 
    private ActionListener listener; 

    private static final int FRAME_WIDTH = 300; 
    private static final int FRAME_HEIGHT = 600;    

} 
+0

什麼是錯誤?你是否嘗試嘗試並知道錯誤? – Azad 2013-03-15 15:39:21

+0

這是一個相關的[示例](http://stackoverflow.com/a/15187181/1057230) – 2013-03-15 15:49:02

+0

請處理您的問題標題。 – mre 2013-03-15 15:51:18

回答

4

在您創建的組合框,並指定監聽器的時候,在createComboLeague(),聽者仍是空。它僅在調用createComboLeague()方法後才初始化。

+0

Thx那是錯誤 – Alpan67 2013-03-15 15:40:53

1
import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

public class ChooseFrame extends JFrame 
{ 
    private JPanel leaguePanel; 
     private JComboBox comboLeague; 
     private JLabel labelLeagueImage; 
     private ActionListener listener; 

     private static final int FRAME_WIDTH = 300; 
     private static final int FRAME_HEIGHT = 600; 
    public ChooseFrame() 
    { 
     labelLeagueImage = new JLabel("Liga"); 
      comboLeague = createComboLeague(); 



     // listener = new ChooseListener(); 
     leaguePanel = new JPanel(); 
     leaguePanel.add(comboLeague); 
     leaguePanel.add(labelLeagueImage); 
     add(leaguePanel); 
     setSize(FRAME_WIDTH, FRAME_HEIGHT); 
    } 

    public JComboBox createComboLeague() 
    { 
     JComboBox combo = new JComboBox(); 
     combo.addItem("Select a league"); 
     combo.addItem("Italia - Serie A"); 
     combo.addItem("Italia - Serie B"); 
     combo.addActionListener(listener); 
     combo.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent event) { 
       // TODO Auto-generated method stub 
       String league = (String)comboLeague.getSelectedItem(); 

       if (league.equals("Italia - Serie A")) 
       { 
        ImageIcon icon = new ImageIcon("Italia - Serie A.png"); 
        labelLeagueImage.setIcon(icon); 
       } 


      } 
     }); 
     return combo; 
    } 


    public static void main(String[] args) { 
     ChooseFrame cs=new ChooseFrame(); 
     cs.setVisible(true); 
    } 

} 
+1

嗯..其中的解釋是什麼?一大塊代碼不是答案。 – mre 2013-03-15 15:58:41

+1

我在創建組合框後添加偵聽器,它工作正常 – Biswajit 2013-03-15 16:00:08