gpt4 book ai didi

java - 如何向 JOptionPane 按钮添加鼠标监听器?

转载 作者:行者123 更新时间:2023-11-30 01:45:57 27 4
gpt4 key购买 nike

我想更改 JOptionPane.ShowMessageDialog 上按钮的外观。我已经设法用

更改按钮标题
UIManager.put("OptionPane.okButtonText", "Text I want");

现在,我的下一个目标是让 Button 与我的应用程序其余部分中的按钮一样工作。也就是说,当鼠标悬停在其上时,它会更改背景和字体颜色。在我的其余按钮上,我添加了鼠标监听器,如下所示:

    //setting change color on hover
private final MouseListener mouseAction = new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
JButton rollOver = (JButton)e.getSource();
if (rollOver.isEnabled()) {
rollOver.setBackground(new Color(163, 184, 204));
rollOver.setForeground(Color.WHITE);
rollOver.setFont(b);
}
};

@Override
public void mouseExited(MouseEvent e) {
JButton rollOver = (JButton)e.getSource();
if (rollOver.isEnabled()) {
rollOver.setBackground(new Color(230, 230, 230));
rollOver.setForeground(Color.BLACK);
rollOver.setFont(f);
}
};
};

之前在代码中我设置了字体变量:

    Font f = new Font("System", Font.PLAIN, 12);
Font b = new Font("System", Font.BOLD, 12);

我可以从头开始创建新的对话框并实现此行为,但这有点过分了。

是否有某种方法可以访问 JOptionPane 上的 Button 并添加鼠标监听器到它吗?

最佳答案

UIManager.put("OptionPane.okButtonText", "Text I want");

以上内容将更改您创建的所有 JOptionPanes 上所有“确定”按钮的文本。

如果您想更改特定 JOptionPane 上单个按钮上的文本,则阅读 Swing 教程中 Customizing Button Text 的部分.

Is there some way to access Button on JOptionPane and add mouse listener to it?

当您使用静态 showXXX(...) 方法时,会创建一个模态 JDialog,因此您无法访问该对话框或其组件,直到对话框关闭为止,但为时已晚。

因此,您需要手动创建 JOptionPane 并将其添加到 JDialog 中。通过阅读 JOptionPane API 并查看标题为“直接使用” 的部分,可以了解执行此操作的基础知识。

创建 JOptionPane 后(在使对话框可见之前),您可以在选项 Pane 中搜索按钮并向每个按钮添加一个 MouseListener。为了帮助您解决此问题,您可以使用 Swing Utils类(class)。它将对选项 Pane 进行递归搜索,并在列表中将按钮返回给您。然后,您可以遍历 List 并添加 MouseListener

使用此帮助器类的基本代码是:

JOptionPane optionPane = new JOptionPane(
"Are you sure you want to exit the application",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_CANCEL_OPTION);

List<JButton> buttons = SwingUtils.getDescendantsOfType(JButton.class, optionPane, true);

for (JButton button: buttons)
{
System.out.println( button.getText() );
}

关于java - 如何向 JOptionPane 按钮添加鼠标监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57996810/

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