首頁 > Java > java教程 > 為什麼在調整 Java Swing 視窗大小時我的 JButton 行為會發生意外變化?

為什麼在調整 Java Swing 視窗大小時我的 JButton 行為會發生意外變化?

Patricia Arquette
發布: 2024-12-17 02:45:24
原創
345 人瀏覽過

Why Does My JButton Behavior Change Unexpectedly When Resizing My Java Swing Window?

球動畫應用程式中的JButton 調整大小問題和意外行為

問題:

用戶正在描述其內部的問題Java Swing 應用程式中,當調整視窗大小時,JButton 的行為會意外變更。具體來說,“開始/停止”按鈕在單擊後將其文字更改回“開始”,而“球顏色”按鈕未按預期更新其顏色和文字。

解:

提供的解決方案解決了可能導致觀察到的行為的幾個潛在問題:

1.過度使用revalidate()和repaint():

原始程式碼在設定按鈕背景顏色後來不必要地呼叫revalidate()和repaint()。僅當組件的佈局或外觀需要動態調整時才需要這些方法。

2.顏色限制與 API 使用:

Color.white 不能更亮,Color.black 不能更暗。此外,範例使用 Color.darkGray.darker() ,結果為 Color.black。同時具有明暗變化的顏色,請適當使用 Color.brighter() 或 Color.darker()。

3.使用隊列進行顏色管理:

不使用靜態顏色數組,而是使用隊列來簡化顏色管理並允許循環顏色。

4.修正了 DrawingArea 重繪呼叫:

DrawingArea 元件在其背景或前景色更新時正確調用 repaint()。

5.最佳化按鈕行為:

開始/停止按鈕根據計時器的運作狀態正確變更其文字。 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板