1

テキスト内のフォントを編集するためのボタンが 2 つあります。太字のボタンと斜体のボタンは、別々に使用すると正常に機能しますが、一緒には機能しません。ボタンを連携させるにはどうすればよいですか? (太字+斜体)

final JToggleButton boldbuttonpage1 = new JToggleButton("");
        boldbuttonpage1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(boldbuttonpage1.isSelected()){
                    textpage1.setFont(new Font("Arial", Font.BOLD, 12));
                }
                else textpage1.setFont(new Font("Arial", Font.PLAIN, 12));
            }
        });
        boldbuttonpage1.setBounds(21, 32, 27, 23);
        gtapage1.add(boldbuttonpage1);

        final JToggleButton italicbuttonpage1 = new JToggleButton("");
        italicbuttonpage1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(italicbuttonpage1.isSelected()){
                    textpage1.setFont(new Font("Arial", Font.ITALIC, 12));
                }
                else textpage1.setFont(new Font("Arial", Font.PLAIN, 12));
            }
        });
        italicbuttonpage1.setBounds(21, 93, 27, 23);
        gtapage1.add(italicbuttonpage1);
4

1 に答える 1

2

ボタンを 1 回押してフォントを設定すると、前のフォントが上書きされ、前にボタンを押したことによる影響が無効になります。私自身、両方の ActionListeners (または ItemListeners) に同じメソッドを呼び出させ、両方のボタンの状態をチェックし、ボタンの値に応じてフォントを設定します。

また、私のコメントによると、Eclipse タグを取り除き、代わりに Swing タグを質問に追加して、誤解を招かないようにしてください。Eclipse は、IDE として使用している単なるツールであり、質問とは関係ありません。

余談ですが、コンポーネントの境界を設定したり、null レイアウトを使用したりするべきではなく、適切なレイアウト マネージャーを使用する必要があります。


編集
あなたは尋ねます:

ボタンの状態を確認する方法は? 詳しく教えてください。

isSelected()メソッド呼び出しを使用して、ボタンの状態を確認する方法は既に知っています。ボタンが押されたときに 1 つのボタンだけをチェックするのではなく、両方をチェックします。実際、両方のボタンに同じ ActionListener を与えることができます:

ActionListener actionListener = new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    // check selected states of both button one and two and set font accordingly
    // you can use if (foo && bar) {...}
    // else if (foo) {...}
    // else if (bar) {...}
    // else {.. default...}
  }
};
button1.addActionListener(actionListener);
button2.addActionListener(actionListener);
于 2014-01-06T18:54:56.240 に答える