Java - 如果之后定义了actionPerformed,则JButton文本将消失

Ben*_*Ben 5 java swing text action jbutton

这一直困扰着我.如果我定义之前setText在JButton上定义,文本将消失:setAction

JButton test = new JButton();
test.setText("test");  // Before - disappears!
test.setAction(new AbstractAction() {
    public void actionPerformed(ActionEvent e) {
        // do something
    }
});
this.add(test);
Run Code Online (Sandbox Code Playgroud)

如果它之后,没有问题.

JButton test = new JButton();
test.setAction(new AbstractAction() {
    public void actionPerformed(ActionEvent e) {
        // do something
    }
});
test.setText("test");  // After - no problem!
this.add(test);
Run Code Online (Sandbox Code Playgroud)

此外,如果我在JButton构造函数中设置文本,那很好!Yarghh!

为什么会这样?

MBy*_*ByD 7

文档中所述:

设置Action会立即更改Swing组件支持操作中描述的所有属性.

这些属性在此处描述,包括文本.