1

私は、いくつかのマシンでエンコーディングが異なる可能性がある git を使用したプロジェクトに取り組んでいます。

これを設定した場合:

private JButton translationButton1 = new JButton("←");
translationButton1.addActionListener(this);

次に、リスナーを設定します。

@Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }

を使用して「←」を取得できることはわかっていますe.getActionCommand()が、私と同じエンコーディング (たとえば Cp1252) を持っていない人が「←」を取得できるかどうかはわかりません。

actionPerformed method( )内のボタンの名前を取得することは可能if(???.equals("translationButton1")ですか? anonymous inner type(複数の actionListener を設定する必要があるため、使用したくありません)

ありがとう

4

3 に答える 3

4

いいえ。ただし、アクション コマンドを設定できます。

translationButton1.setActionCommand("translationButton1");

次に、コマンドを確認します。

public void actionPerformed(ActionEvent ae) {
    if (ae.getActionCommand.equals("translationButton1") {
        // do something
    }
}
于 2013-04-30T14:54:32.317 に答える
1

ボタンの名前を取得することは可能ですか..?

1 つのボタンが 3 つの異なる属性名に割り当てられているか、まったく割り当てられていない可能性があります。いいえ、「the」変数名を取得することはできません。

于 2013-04-30T14:52:40.690 に答える
1

encoding次の方法でユーザーのコンピューターにアクセスできますSystem.getProperty("file.encoding")

したがって、コードは次のようになります。

@Override
    public void actionPerformed(ActionEvent e) {
    String encoding =System.getProperty("file.encoding");
    if (encoding.equals("UTF-8"))
       // do something
    else if (encoding.equals("Cp1252"))
       // do something else
    // else if (encoding.equals("someEncoding"))
       do something else yet
    }

それにもかかわらず、@whiskeyspiderがここで説明したアプローチもお勧めします...この場合のよりクリーンなプラクティスです..

于 2013-04-30T14:50:56.170 に答える