我刚刚注意到,当至少有以下两件事是真的时,JButton不会将文本更改为耦合Action对象的NAME值:
preferredSize属性不是默认值。text属性不是默认的"“(空)。它可能是属性值的其他组合使得按钮忽略操作的名称,但是当我将其中一个设置为默认值时,它会工作。
很明显,操作是正确注册的,hideActionText属性是false。此外,我应该说,我通过Netbeans设计器中的属性面板设置了这些属性。
谷歌的一些搜索并没有带来任何影响。这是否正常的行为,能否解决?
发布于 2012-04-11 23:27:08
我要说两件事:
我不认为所描述的行为有任何问题。如果没有提供文本,则默认为“操作”的名称(如果有的话)。否则它就会是空的。如果您想强制使用preferredSize,那么在某些情况下,您完全有权这样做。
如果您想要显示Action,就不要在JButton上设置另一个"text“值。
编辑
如果我设置文本,而不是设置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);
}
}https://stackoverflow.com/questions/10115118
复制相似问题