我刚刚注意到JButton
当至少满足以下两个条件时,它不会将文本更改为耦合NAME
对象的Action
值:
preferredSize
属性不是默认值。text
属性不是默认的“”(空)。可能有其他属性值组合使按钮忽略操作的名称,但是当我将其中一个或另一个设置为默认值时,它会起作用。
我会明确表示行动正确注册,hideActionText
属性为 false 。另外,我应该说我通过 Netbeans GUI设计器中的属性面板设置了这些属性。
一些谷歌搜索没有带来什么。这是正常的行为,可以解决吗?
答案 0 :(得分:6)
我会说两件事:
我没有看到所述行为中的任何问题。如果未提供任何文本,则默认为Action的NAME(如果有)。否则,它将是空的。 如果你想强制使用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);
}
}