我做了一個SSCCE。請注意,它必須是Windows Look &感覺。getRootPane()默認按鈕 - 這是一個錯誤?
import java.awt.*;
import javax.swing.*;
public class DefaultButtonBug {
private static final String LAF_WINDOWS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(LAF_WINDOWS);
} catch (Exception ex) {
System.out.println("Setting the L&F failed so I cannot reproduce the bug.");
System.exit(1);
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JPanel content = new JPanel();
JButton defaultButton = new JButton("Default");
content.add(defaultButton);
JFrame frame = new JFrame();
frame.getRootPane().setDefaultButton(defaultButton);
frame.setContentPane(content);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
}
- 啓動這個
- 的按鈕應該被重點關注。如果沒有,請點擊它。
- 點擊其他任何窗口,確保當前窗口失去焦點
- 即使此窗口沒有焦點,按鈕仍然保持藍色的動畫效果!
按鈕「脈動」動畫中不存在標準的Java大號& F.
備註東西,當該按鈕不再默認按鈕(刪除代碼中的相應的行),則窗口失去焦點並且沒有任何動畫時,按鈕將變爲灰色。
我給你的問題是:這被認爲是一個錯誤?因爲當窗口被隱藏在另一個窗口後面時,這使得EDT保持幹勁,而不是閒置(我做了一些分析)。事實上,最令我困擾的是:隱藏窗戶並不會讓美國東部時間閒置。
沒問題,在WinXp上測試過, 7,8用Java編譯6/7 – mKorbel 2013-03-21 13:20:19
@mKorbel在WinXP下你的外觀和感覺在聚焦按鈕上有那種發光/脈動動畫嗎? – Timmos 2013-03-21 13:21:53
和JButton可以在focusLost上使用Win8/Java 7中的鼠標懸停功能(另一個窗口的焦點在操作系統中) – mKorbel 2013-03-21 13:22:19