如何将combobox(字符串)连接到JFrame for Java上的JTextField

如何将combobox(字符串)连接到JFrame for Java上的JTextField,java,combobox,jframe,jtextfield,Java,Combobox,Jframe,Jtextfield,我正在尝试做一个曲棍球统计程序,以及如何将我为combobox创建的字符串连接到JTextField。(例如,如果阿纳海姆的科里·佩里有3个进球,我如何在进球场上打入3个进球)?另外,如果可能的话,我如何使------中心------不可拾取 public FantasyHockey() { String team[] = {"Anaheim Ducks", "Arizona Coyotes", "Boston Bruins", "Buffalo Sabres",

我正在尝试做一个曲棍球统计程序,以及如何将我为combobox创建的字符串连接到JTextField。(例如,如果阿纳海姆的科里·佩里有3个进球,我如何在进球场上打入3个进球)?另外,如果可能的话,我如何使------中心------不可拾取

    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);
    }
}
如果阿纳海姆球场上的科里·佩里有3个进球,我如何在球场上打入3个进球

然后需要在ComboBoxModel中存储一个自定义对象。此对象将有两条信息-playerName和playerGoals。该名称将显示在组合框中,然后当您单击该项目时,您可以获得该对象,然后显示目标

查看此方法的概要

另外,如果可能的话,我如何使------中心------不可拾取

    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);
    }
}
一个选项,用于在未选择任何项目时显示提示。看看有什么建议


注意:如果您想使用这些想法,您需要修改第一个解决方案以支持提示,因为这两个建议都涉及自定义呈现程序,代码需要组合成一个。

不要使用空布局。不要使用setBounds()。Swing设计用于布局管理器。