問題:
用戶正在描述其內部的問題Java Swing 應用程式中,當調整視窗大小時,JButton 的行為會意外變更。具體來說,“開始/停止”按鈕在單擊後將其文字更改回“開始”,而“球顏色”按鈕未按預期更新其顏色和文字。
解:
提供的解決方案解決了可能導致觀察到的行為的幾個潛在問題:
原始程式碼在設定按鈕背景顏色後來不必要地呼叫revalidate()和repaint()。僅當組件的佈局或外觀需要動態調整時才需要這些方法。
Color.white 不能更亮,Color.black 不能更暗。此外,範例使用 Color.darkGray.darker() ,結果為 Color.black。同時具有明暗變化的顏色,請適當使用 Color.brighter() 或 Color.darker()。
不使用靜態顏色數組,而是使用隊列來簡化顏色管理並允許循環顏色。
DrawingArea 元件在其背景或前景色更新時正確調用 repaint()。
開始/停止按鈕根據計時器的運作狀態正確變更其文字。 BALL COLOR 按鈕更新其背景顏色以符合目前選擇的顏色。
這裡是原始和修改後的比較程式碼:
原文:
startStopButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 4, true)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder( Color.WHITE, 2, true)); buttonPanel.add(colourButton);
startStopButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(startStopButton); colourButton.setBorder(BorderFactory.createLineBorder(Color.gray, 4)); buttonPanel.add(colourButton);
以上是為什麼在調整 Java Swing 視窗大小時我的 JButton 行為會發生意外變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!