java jbutton action_Java JButton.setAction(…)null的按钮文本

以下代码呈现没有文本的JButton:

public abstract class Test {

public static void main(String... args) {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {

e.printStackTrace();

}

SwingUtilities.invokeLater(() -> {

JFrame frame = new JFrame();

JPanel panel = new JPanel();

String text = "Invisible";

JButton button = new JButton(text); // blank button rendered ???

System.out.println(button.getText()); // prints Invisible

button.setAction(new AbstractAction() {

@Override

public void actionPerformed(ActionEvent arg0) {

// do nothing

}

});

System.out.println(button.getText()); // prints null ???

button.setFocusable(false);

button.setPreferredSize(new Dimension(100, 40));

panel.add(button);

frame.setResizable(false);

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

});

}

}

如果我删除对button.setAction(…)的调用,它将呈现包含文本的按钮.

或者:

public abstract class Test {

public static void main(String... args) {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {

e.printStackTrace();

}

SwingUtilities.invokeLater(() -> {

JFrame frame = new JFrame();

JPanel panel = new JPanel();

String text = "Invisible";

JButton button = null;

button = new JButton(new AbstractAction() {

@Override

public void actionPerformed(ActionEvent arg0) {

// do nothing

}

});

button.setText(text); // renders the button with text

System.out.println(button.getText()); // prints Invisible obviously

button.setFocusable(false);

button.setPreferredSize(new Dimension(100, 40));

panel.add(button);

frame.setResizable(false);

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

});

}

}

工作正常,但有一些令人讨厌的含义,如无法更改按钮操作而不重置其文本后.

为什么?!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值