1

少なくとも次の2つのことが当てはまる場合、aがテキストを結合オブジェクトJButtonの値に変更しないことに気づきました。NAMEAction

  • ボタンのpreferredSizeプロパティはデフォルト値ではありません。
  • ボタンのtextプロパティは、デフォルトの「」(空)ではありません。

ボタンがアクションの名前を無視するようにするプロパティ値の他の組み合わせがある可能性がありますが、どちらか一方をデフォルトにすると、機能します。

アクションが適切に登録されており、hideActionTextプロパティがfalseであることは明らかです。さらに、これらのプロパティは、NetbeansGUIデザイナのプロパティパネルを介して設定したと言えます。

いくつかのグーグル検索は何ももたらさなかった。これは正常な動作であり、解決できますか?

4

1 に答える 1

6

私は2つのことを言うでしょう:

  1. JButtonのpreferredSizeを強制するのはなぜですか(それ以外の場合は、JButtonに含まれるテキストとアイコンに基づいています)。
  2. アクション名からのテキストが必要な場合、なぜJButtonのテキストを設定するのでしょうか。

説明されている動作に問題はありません。テキストが提供されていない場合、デフォルトでアクションの名前(存在する場合)になります。そうでなければ、それはただ空になります。強制的にpreferredSizeを使用したい場合は、状況によっては、そうするすべての権利があります。

アクション名を表示したい場合は、JButtonに別の「テキスト」値を設定しないでください。

編集


テキストを設定したがpreferredSizeを設定しなかった場合でも、ボタンのテキストが表示されます(テキストが小さすぎて収まらない場合でも、テキストに「...」が表示されます)。このSSCCEで自分でテストしてください。

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.io.IOException;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) throws IOException {
        JFrame frame = new JFrame();
        frame.setTitle("frame");
        final JButton button = new JButton(new AbstractAction("Action text") {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.err.println("Hello");
            }
        });
        button.setText("Button text which is a lot longer");
        button.setPreferredSize(new Dimension(100, 30));
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
    }
}
于 2012-04-11T23:27:08.537 に答える