私は2つのことを言うでしょう:
- JButtonのpreferredSizeを強制するのはなぜですか(それ以外の場合は、JButtonに含まれるテキストとアイコンに基づいています)。
- アクション名からのテキストが必要な場合、なぜ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);
}
}