java 按钮不显示文字_java – 使JButton中的文本不可见

你说:

EDIT: I can’t use .setText(” “) because I have to compare the value within it.

废话.正如我在评论中提到的,将JButton的文本设置为“”,并且不要使用JButton的文本进行比较.而是使用它的actionCommand通过getActionCommand()轻松获得.或者使用HashMap< JButton,SomethingElse>.

您可以考虑在需要更改其行为和状态时更改JButton的Action,这可以通过调用setAction(…)轻松完成

例如,

import java.awt.event.ActionEvent;

import javax.swing.*;

public class ButtonActions {

private static void createAndShowGui() {

JPanel mainPanel = new JPanel();

JButton myButton = new JButton();

StartAction startAction = new StartAction();

PauseAction pauseAction = new PauseAction();

BlankAction blankAction = new BlankAction();

startAction.setNextAction(pauseAction);

pauseAction.setNextAction(blankAction);

blankAction.setNextAction(startAction);

myButton.setAction(startAction);

mainPanel.add(myButton);

JFrame frame = new JFrame("ButtonActions");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(mainPanel);

frame.pack();

frame.setLocationByPlatform(true);

frame.setVisible(true);

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGui();

}

});

}

}

class SwappingAction extends AbstractAction {

private Action nextAction;

public SwappingAction(String text) {

super(text);

}

public void setNextAction(Action nextAction) {

this.nextAction = nextAction;

}

public Action getNextAction() {

return nextAction;

}

@Override

/**

* super method needs to be called in child for swap to work

*/

public void actionPerformed(ActionEvent e) {

System.out.println("ActionCommand: " + e.getActionCommand());

((AbstractButton)e.getSource()).setAction(nextAction);

}

}

class StartAction extends SwappingAction {

public static final String START = "Start";

public StartAction() {

super(START);

}

@Override

public void actionPerformed(ActionEvent e) {

super.actionPerformed(e);

// start-specific code goes here

}

}

class PauseAction extends SwappingAction {

public static final String PAUSE = "Pause";

public PauseAction() {

super(PAUSE);

}

@Override

public void actionPerformed(ActionEvent e) {

super.actionPerformed(e);

// pause-specific code goes here

}

}

class BlankAction extends SwappingAction {

public static final String BLANK = " ";

public BlankAction() {

super(BLANK);

}

@Override

public void actionPerformed(ActionEvent e) {

super.actionPerformed(e);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值