我有一種情況,在點擊一個JButton之後需要顯示一個JOptionPane。 JButton有一個默認圖標和一個滾動圖標(顯示鼠標在按鈕上滾動的時間)。但是,一旦點擊該按鈕並出現JOptionPane,翻轉圖標就不會變回原來的狀態,並繼續保持原樣,直到用戶在選擇合適的JOptionPane選項後將鼠標移回JButton的框架。如何在JButton被點擊並顯示JOptionPane時「展開」展開?當顯示一個JOptionPane時,顯示一個JButton「Un-rollover」
TL; DR:JButton即使單擊並顯示JOptionPanel也會顯示翻轉圖標。我不喜歡。
這裏的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);
}
}
注:我已經發現了幾類似問題這一個。然而,這個問題不是重複的,因爲這些問題與這個問題稍有不同(例如按鈕保持按下,而不是翻轉)。其中的幾個問題(當然,實際上所有的人我能找到)是:
- JButton stays pressed when focus stolen by JOptionPane
- JButton stays pressed after a JOptionPane is displayed
- JButton 「stay pressed」 after click in Java Applet
+1:非常感謝!這非常好。我在JButton本身而不是ButtonModel上搜索setRollover()函數。 –