2

setName 関数を追加するために編集されました。

私は、大学で約 6 時間の CS の後に Java の学習を支援するために、stackoverflow を 1 年以上使用しています。君たちは最高です!だからそれに到達する...

私の問題は、複数の textFields を持つ JOptionPane を持っていることです。これらのフィールドからテキストを取得するすべての例は、単一の textField のみを示しています。各ボックスを個別に処理する textField ごとに個別の DocumentListener を作成できますが、次のような DocumentListener を 1 つ作成する方法が必要なようです。

if(ネームボックスが変更されました)

名前を編集

else if(dataBox が変更されました)

データの編集

等....

元のコードは次のとおりです。

    public class HumanPlayer extends Player
    {
    /**
     * Constructor for objects of class HumanPlayer
     */
    public HumanPlayer()
    {
        setName("Human " + getOrder());
    }


    @Override
    public void chooseSoldiers()
    {
        JLabel nameLabel = new JLabel("Enter name: " );
        //humans.setPreferredSize(new Dimension(100,50));


        final JTextField nameBox = new JTextField();
        final JTextField infantryBox = new JTextField();
        final JTextField scoutBox = new JTextField();
        final JTextField sniperBox = new JTextField();
        JLabel infLabel = new JLabel("Infantry: " );
        JLabel scLabel = new JLabel("Scouts: " );
        JLabel snLabel = new JLabel("Snipers: " );

        JPanel soldierPanel = new JPanel();
        soldierPanel.setLayout(new GridLayout(4,2,5, 8));
        soldierPanel.add(nameLabel);
        soldierPanel.add(nameBox);
        soldierPanel.add(infLabel);
        soldierPanel.add(infantryBox);
        soldierPanel.add(scLabel);
        soldierPanel.add(scoutBox);
        soldierPanel.add(snLabel);
        soldierPanel.add(sniperBox);

        nameBox.getDocument().addDocumentListener(new NameListener());
        infantryBox.getDocument().addDocumentListener(new NameListener());
        scoutBox.getDocument().addDocumentListener(new NameListener());
        sniperBox.getDocument().addDocumentListener(new NameListener());

        int ok = JOptionPane.showOptionDialog(null, soldierPanel,  
                "Player " + getOrder(), JOptionPane.CANCEL_OPTION,  
            JOptionPane.QUESTION_MESSAGE, null, null, null);        
       }

    public class NameListener implements DocumentListener
    {

        @Override
        public void changedUpdate(DocumentEvent e) {}
        @Override
        public void insertUpdate(DocumentEvent e) {
            try {
                   setName(e.getDocument().getText(0,e.getDocument().getLength()));
            } catch (BadLocationException e1) {e1.printStackTrace();}

        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            try {
                setName(e.getDocument().getText(0,e.getDocument().getLength()));
            } catch (BadLocationException e1) {e1.printStackTrace();
                }               
           }
    }
}

別ファイル:

public abstract class Player
{
....
private String name;
 ....

public void setName(String _name)
{
    name = _name;
}
4

1 に答える 1