gpt4 book ai didi

java - 当 preferredSize 为非默认值时,JButton 不执行操作的名称

转载 作者:行者123 更新时间:2023-11-29 07:15:18 27 4
gpt4 key购买 nike

我刚刚注意到 JButton 至少在以下两件事是正确的:

  • 按钮的 preferredSize 属性不是默认值。
  • 按钮的 text 属性不是默认的“”(空)。

可能有其他属性值组合使按钮忽略操作的名称,但是当我将一个或另一个设置为默认值时,它起作用了。

我会明确说明该操作已正确注册,并且 hideActionText 属性为 false。此外,我应该说我是通过 Netbeans GUI 设计器 中的属性面板 设置这些属性的。

一些谷歌搜索没有带来任何结果。这是正常现象吗?可以解决吗?

最佳答案

我想说两件事:

  1. 为什么强制使用 JButton 的 preferredSize(否则它仅基于它包含的文本和图标)?
  2. 如果您想要来自 Action NAME 的文本,为什么要设置 JButton 的文本?

我在描述的行为中没有发现任何问题。如果未提供文本,则默认为操作的名称(如果有)。否则,它将只是空的。如果您想强制使用 preferredSize,那就这样吧,在某些情况下,您有权这样做。

如果您希望显示 Action NAME,只需不要在 JButton 上设置另一个“文本”值即可。

编辑


如果我设置了文本而不是 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);
}
}

关于java - 当 preferredSize 为非默认值时,JButton 不执行操作的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115118/

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