繁体   English   中英

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

[英]How to connect combobox (String) to a JTextField on JFrame for Java

我正在尝试做一个曲棍球统计程序,以及如何将为组合框创建的字符串连接到JTextField。 (例如,如果阿纳海姆的科里·佩里有3个进球,我该如何在目标JTextField上放置3个进球)? 另外,如果可能的话,如何使----- Centre -----不可点击?

    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个进球,我该如何在目标JTextField上放置3个进球

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

请查看带有自定义渲染器的ComboBox,以获取此方法的概述。

另外,如果可能的话,如何使----- Centre -----不可点击?

当未选择任何项目时,一种显示提示的选项。 查看“ 组合框提示 ”以获取建议。

注意:如果要使用这些想法,则需要修改第一个解决方案以支持提示,因为这两个建议都涉及自定义渲染器,因此代码需要合并为一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM