2015-10-31 3 views
0

Я пытаюсь сделать программу статистики хоккея и как подключить String, созданную мной для combobox, к JTextField. (Например, если Кори Перри на Анахайме имеет 3 гола, как я могу поставить 3 цели на цели JTextField)? Также, если это возможно, как мне сделать ----- Center ----- unclickable?Как подключить combobox (String) к JTextField для JFrame для Java

public FantasyHockey() 
    { 
     String team[] = {"Anaheim Ducks", "Arizona Coyotes", "Boston Bruins", "Buffalo Sabres", "Calgary Flames", "Caroline Huricanes", "Chicago Blackhawks", "Colorado Avalanche", "Columbus Blue Jackets", "Dallas Stars", "Detroit Red Wings", "Edmonton Oilers", "Florida Panthers", "Los Angeles Kings", "Minnesota Wild", "Montreal Canadiens", "Nashville Predators", "New Jersey Devils", "New York Islanders", "New York Rangers", "Ottawa Senators", "Philadelphia Flyers", "Pittsburgh Penguins", "San Jose Sharks", "St. Louis Blues", "Tampa Bay Lightning", "Toronto Maple Leafs", "Vancouver Canucks", "Washington Capitals", "Winnipeg Jets"}; 
     teamName = new JComboBox(team); 
     teamName.setBounds(50, 48, 166, 25); 
     teamName.addActionListener(this); 

     getContentPane().setLayout(null); 
     getContentPane().add(teamName); 


     playerName = new JComboBox(); 
     playerName.setBounds(241, 47, 191, 27); 
     //playerName.setPrototypeDisplayValue("XXXXXXXXXX"); 
     getContentPane().add(playerName); 

     String[] Anaheim = { "-----Centres-----", "Corey Perry","Ryan Getzlaf" }; 
     subItems.put(team[0], Anaheim); 

     String[] Arizona = { "Max Domi" }; 
     subItems.put(team[1], Arizona); 

     String[] Bruins = { "Tuukka Rask" }; 
     subItems.put(team[2], Bruins); 
     teamName.setSelectedIndex(0); 

     JLabel lblTeam = new JLabel("Team"); 
     lblTeam.setBounds(50, 22, 61, 16); 
     getContentPane().add(lblTeam); 

     JLabel lblPlayer = new JLabel("Player"); 
     lblPlayer.setBounds(241, 19, 61, 16); 
     getContentPane().add(lblPlayer); 

     Goals = new JTextField(); 
     Goals.setBounds(25, 181, 42, 25); 
     getContentPane().add(Goals); 
     Goals.setColumns(10); 
     Goals.setEnabled(false); 

     JLabel lblGoals = new JLabel("Goals"); 
     lblGoals.setBounds(25, 153, 61, 16); 
     getContentPane().add(lblGoals); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     String item = (String)teamName.getSelectedItem(); 
     Object o = subItems.get(item); 

     if (o == null) 
     { 
      playerName.setModel(new DefaultComboBoxModel()); 
     } 
     else 
     { 
      playerName.setModel(new DefaultComboBoxModel((String[])o)); 
     } 
    } 

    public void Goals(){ 
     if(teamName.getSelectedItem().equals("Anaheim Ducks")){ 
      if(playerName.getSelectedItem().equals("Corey Perry")){ 
       Goals.setText("a"); 
      } 
     } 
    } 

    public static void main(String[] args) 
    { 
     JFrame frame = new FantasyHockey(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setResizable(true); 
    } 
} 
+0

Не используйте нулевой макет. Не используйте setBounds(). Swing был разработан для использования с менеджерами компоновки. – camickr

ответ

0

если Кори Перри в Анахайме имеет 3 цели, как я ставлю 3 цели на тысячелетия JTextField

Затем вам нужно сохранить пользовательский объект в ComboBoxModel. Этот объект будет иметь две части информации - playerName и playerGoals. Имя будет отображаться в поле со списком, а затем, когда вы нажмете на элемент, вы можете получить объект, а затем отобразить цели.

Отметьте ComboBox With Custom Renderer для схемы этого подхода.

Также, если возможно, как мне сделать ----- Центр ----- unclickable?

Один из вариантов отображения приглашения, когда не выбрано ни одного элемента. Отъезд Combo Box Prompt за предложение.

Примечание: если вы хотите использовать эти идеи, вам нужно будет изменить первое решение для поддержки приглашения, так как оба предложения включают в себя настраиваемый рендеринг, код должен быть объединен в один.

Смежные вопросы