2012-02-09 49 views
1

我想從comboBox中選擇值後顯示錶。在第一次選擇之後,它在UI中添加了另外兩個表格。
任何人都可以說如何解決這個問題?表組件不在lwuit中工作?

下面的代碼:

package com.onmo.classes; 

import java.io.IOException; 

import com.sun.lwuit.Button; 
import com.sun.lwuit.ComboBox; 
import com.sun.lwuit.Command; 
import com.sun.lwuit.Component; 
import com.sun.lwuit.Container; 
import com.sun.lwuit.Form; 
import com.sun.lwuit.Image; 
import com.sun.lwuit.Label; 
import com.sun.lwuit.TabbedPane; 
import com.sun.lwuit.events.ActionEvent; 
import com.sun.lwuit.events.ActionListener; 
import com.sun.lwuit.events.SelectionListener; 
import com.sun.lwuit.layouts.BorderLayout; 
import com.sun.lwuit.layouts.BoxLayout; 
import com.sun.lwuit.layouts.FlowLayout; 
import com.sun.lwuit.plaf.UIManager; 
import com.sun.lwuit.table.DefaultTableModel; 
import com.sun.lwuit.table.Table; 
import com.sun.lwuit.table.TableModel; 
import com.sun.lwuit.util.Resources; 

public class CompareScreen implements ActionListener, SelectionListener { 

    private Command enterCmd; 
    private Command backCmd; 
    private Command exitCmd; 
    private Form comparePage; 
    private Label lblLeagues, lblTeam; 
    private Button btnTeams, btnPlayers; 
    private FlowLayout flowLayout; 
    private ComboBox comboTeamA, comboTeamB, comboTeamC, comboTeamD, player1, 
      player2; 
    private Image firstTeamImage, secondTeamImage = null; 
    private Container teamsContainer, teamCombo, teamImages, playersTeamTab, 
      playersContainer, playersTab, playerImages; 

    int count = 0; 
    CompareScreen(){ 
     enterCmd = new Command("Select"); 
     backCmd = new Command("Back"); 
     exitCmd = new Command("Exit"); 
    } 
    public void displayCompareScreen() { 
     comparePage = new Form(); 
     // comparePage.getStyle().setBgColor(0xaa00ff); 

     String[] teamA = { "Team A", "Villarreal", "Violent Vegans", 
       "Venom XI", "Betis" }; 
     String[] teamB = { "Team B", "Villarreal", "Violent Vegans", 
       "Venom XI", "Betis" }; 
     String[] playerList1 = { "Player1", "Acho, Sam", "Adams, Mike", 
       "Ajirotutu, Seyi", "Abel Gomez" }; 
     String[] playerList2 = { "Player2", "Acho, Sam", "Adams, Mike", 
       "Ajirotutu, Seyi", "Abel Gomez" }; 

     comparePage.addCommand(backCmd); 
     comparePage.addCommandListener(this); 
     lblLeagues = new Label("Premier League"); 
     lblTeam = new Label("Team"); 

     btnTeams = new Button("Teams"); 
     btnPlayers = new Button("Players"); 

     comboTeamA = new ComboBox(teamA); 
     comboTeamB = new ComboBox(teamB); 
     comboTeamC = new ComboBox(teamA); 
     comboTeamD = new ComboBox(teamB); 
     player1 = new ComboBox(playerList1); 
     player2 = new ComboBox(playerList2); 

     comparePage.setLayout(new BorderLayout()); 
     comparePage 
       .addComponent(BorderLayout.WEST, new Label("Premier League")); 
     comparePage.addComponent(BorderLayout.EAST, new Label("Compare")); 

     flowLayout = new FlowLayout(); 
     comparePage.setLayout(flowLayout); 

     try { 
      Resources r = Resources.open("/theme/javathema.res"); 
      UIManager.getInstance().setThemeProps(r.getTheme("javathema")); 
     } catch (IOException ioe) { 
      System.out.println("Couldn't load theme."); 
     } 

     try { 
      firstTeamImage = Image.createImage("/team1.png"); 
      secondTeamImage = Image.createImage("/team2.png"); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     Label lblFirstTeam = new Label(firstTeamImage); 
     lblFirstTeam.setAlignment(Component.LEFT); 

     Label lblSecondTeam = new Label(secondTeamImage); 
     lblSecondTeam.setAlignment(Component.RIGHT); 

     Label lblFirstPlayer = new Label(firstTeamImage); 
     lblFirstTeam.setAlignment(Component.LEFT); 

     Label lblSecondPlayer = new Label(secondTeamImage); 
     lblSecondTeam.setAlignment(Component.RIGHT); 

     teamsContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 

     teamCombo = new Container(new BoxLayout(BoxLayout.X_AXIS)); 
     teamCombo.addComponent(comboTeamA); 
     teamCombo.addComponent(comboTeamB); 

     teamImages = new Container(new BoxLayout(BoxLayout.X_AXIS)); 
     teamImages.addComponent(lblFirstTeam); 
     teamImages.addComponent(lblSecondTeam); 

     teamsContainer.addComponent(teamCombo); 
     teamsContainer.addComponent(teamImages); 

     playersTeamTab = new Container(new BoxLayout(BoxLayout.X_AXIS)); 
     playersTeamTab.addComponent(comboTeamC); 
     playersTeamTab.addComponent(comboTeamD); 

     playersTab = new Container(new BoxLayout(BoxLayout.X_AXIS)); 
     playersTab.addComponent(player1); 
     playersTab.addComponent(player2); 

     playerImages = new Container(new BoxLayout(BoxLayout.X_AXIS)); 
     playerImages.addComponent(lblFirstPlayer); 
     playerImages.addComponent(lblSecondPlayer); 

     playersContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 
     playersContainer.addComponent(playersTeamTab); 
     playersContainer.addComponent(playersTab); 
     playersContainer.addComponent(playerImages); 

     TabbedPane tabbedPane = new TabbedPane(TabbedPane.TOP); 
     tabbedPane.addTab("Teams", teamsContainer); 
     tabbedPane.addTab("Players", playersContainer); 

     // comboTeamA.addSelectionListener(this); 
     comboTeamB.addSelectionListener(this); 
     // comboTeamC.addSelectionListener(this); 
     comboTeamD.addSelectionListener(this); 

     // comboTeamA.addActionListener(this); 

     comparePage.addComponent(tabbedPane); 
     comparePage.show(); 

    } 

    public void selectionChanged(int arg0, int arg1) { 
     // TODO Auto-generated method stub 
     System.out.println("Before :" + count); 
     Table tableTeam = null, tablePlayer = null; 
     if (comboTeamA.getSelectedIndex() != 0 && comboTeamB.getSelectedIndex() != 0 && comboTeamC.getSelectedIndex() == 0 && comboTeamD.getSelectedIndex() == 0) { 

      TableModel model = new DefaultTableModel(new String[] { "10 ", 
        "Games Played", "10" }, new Object[][] { 
        { "7 ", "Wins", " 6" }, { "2 ", "Draws", " 1" }, 
        { "1 ", "Defeats", " 1" }, { "10 ", "Goals for", " 8" }, }); 

      tableTeam = new Table(model); 
      if (count == 1) { 
       teamsContainer.addComponent(tableTeam); 
       count = 0; 
      } 

      count = count + 1; 
      System.out.println("On :" + count); 
     } 

     if (comboTeamA.getSelectedIndex() == 0 && comboTeamB.getSelectedIndex() == 0 && comboTeamC.getSelectedIndex() != 0 && comboTeamD.getSelectedIndex() != 0) { 

      TableModel model = new DefaultTableModel(new String[] { "10 ", 
        "Games Played", "10" }, new Object[][] { 
        { "260 ", "Minutes Played", " 280" }, 
        { "240 ", "Starts", " 230" }, 
        { "20 ", "Substitute", " 30" }, 
        { "6 ", "Goals for", " 9" }, }); 

      tablePlayer = new Table(model); 
      if (count == 1) { 
       playersContainer.addComponent(tablePlayer); 
       count = 0; 
      } 
      count = count + 1; 
      System.out.println("On :" + count); 
     } 
     /* 
     * if(tableTeam != null && tablePlayer != null) { 
     * teamsContainer.removeComponent(tableTeam); 
     * playersContainer.removeComponent(tablePlayer); } 
     */ 
     System.out.println("After :" + count); 
    } 


    public void actionPerformed(ActionEvent arg0) { 
     // TODO Auto-generated method stub 
     HomePage homePageObj=HomePage.getInstance(); 
     homePageObj.displayHomePage(); 
    } 

} 

回答

2

問題是這段代碼:

public void selectionChanged(int arg0, int arg1) { 
... 
tableTeam = new Table(model); 
      if (count == 1) { 
       teamsContainer.addComponent(tableTeam); 
       count = 0; 
      } 

      count = count + 1; 
... 
} 

這段代碼意味着你添加另一個Table每次選擇從ComboBox另一個值:DON」 T RESET「count」TO 0!