asp*_*rge 9 java swing jbutton joptionpane
我有一种情况,我需要在点击JButton后显示一个JOptionPane.JButton有一个默认图标和一个翻转图标(显示鼠标滚过按钮的时间).但是,一旦单击按钮并显示JOptionPane,翻转图标就不会更改回原始图标,并继续保持这种状态,直到用户在选择适当的JOptionPane选项后将鼠标带回JButton的框架.如果单击JButton并显示JOptionPane,我将如何"取消翻转"它?
TL; DR:即使单击并显示JOptionPanel,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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我发现了几个类似的问题.但是,这个问题并不重复,因为这些问题属于与此问题略有不同的问题(例如按钮保持按下,而不是翻转).其中一些问题(实际上我能找到的所有问题)是:
翻转状态由ButtonModel管理.您可以通过模型的setRollover(boolean b)方法重置翻转标志,该方法将图标设置回非翻转状态图标.在您的示例中实现ActionListener:
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
b.getModel().setRollover(false);//reset the rollover flag
JOptionPane jOP = new JOptionPane("Dummy message");
JDialog dialog = jOP.createDialog(p, null);
dialog.setVisible(true);
}
});
Run Code Online (Sandbox Code Playgroud)
您可能还希望JButton在对话框关闭后检查鼠标是否仍位于对话框上以重置翻转标志(如有必要) - 您可以通过MouseInfo执行此操作,通过转换从中检索的屏幕坐标来检查JButton是否包含该点MouseInfo.getPointerInfo().getLocation()使用SwingUtilities.convertPointFromScreen到组件坐标.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |