gpt4 book ai didi

java - 使 JButton 中的文本不可见

转载 作者:搜寻专家 更新时间:2023-11-01 03:08:12 25 4
gpt4 key购买 nike

我制作了一个按钮并对其执行了 .setText(),因为我必须将 .setText() 的值与其他值进行比较。

我将 .setText() 应用于 JButton,但我不希望文本在我的按钮中可见。如果我执行 setVisible(false) 然后它会隐藏整个按钮,但我只希望它隐藏文本。

有这个选项吗?我考虑过制作自定义字体并将其应用于 .setText() 中的文本,但我想知道是否有更有效的方法来解决我的问题。

提前谢谢你们。

编辑:我不能使用 .setText("") 因为我必须比较其中的值。

最佳答案

你声明:

EDIT: I can't use .setText(" ") because I have to compare the value within it.

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

当您需要更改 JButton 的行为和状态时,您可以考虑更改 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);
}
}

关于java - 使 JButton 中的文本不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com