我有一个情况,需要在单击JButton后显示JOptionPane。JButton具有默认图标和鼠标悬停图标(当鼠标滑过按钮时显示)。但是,一旦单击该按钮并出现JOptionPane,悬停图标就不会改回原本的默认图标,直到用户在选择适当的JOptionPane选项后将鼠标带回JButton的框架中。当JButton被点击且JOptionPane被显示时,如何“取消悬停”JButton?
简而言之: 即使在被点击和JOptionPane出现时,JButton仍然显示悬停图标。 我不喜欢。
这里是SSCCE:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class ButtonUnrollover {
public static void main(String[] args) {
JFrame f = new JFrame();
final JPanel p = new JPanel();
JButton b = new JButton();
b.setIcon(UIManager.getIcon("OptionPane.informationIcon"));
b.setRolloverIcon(UIManager.getIcon("OptionPane.errorIcon"));
// b.setSelectedIcon(UIManager.getIcon("OptionPane.informationIcon"));
// b.setRolloverSelectedIcon(UIManager.getIcon("OptionPane.informationIcon"));
// b.setPressedIcon(UIManager.getIcon("OptionPane.informationIcon"));
p.add(b);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane jOP = new JOptionPane("Dummy message");
JDialog dialog = jOP.createDialog(p, null);
dialog.setVisible(true);
}
});
f.add(p);
f.pack();
f.setVisible(true);
}
}
NB: 我已经发现了几个与此类似的问题。然而,这个问题不是重复的,因为那些问题涉及与此问题略有不同的问题(例如按钮保持按下状态,而不是滚动)。我能找到的其中一些问题(实际上是所有我能找到的问题)包括: