2010-11-26 59 views
1

我正在寫我的第一個Java程序(在Netbeans中),我迷路了。我現在有兩個問題,如果有人願意幫助我。選擇時更改JButton的顏色,並在JFormattedTextField上設置遮罩?

下面是該程序是應該做的:

取1 4的「狀態」選項,再加上5位數字(這兩個項目都是通過通過一個觸摸屏顯示器用戶輸入)和然後將此信息通過電子郵件發送給具有以下主題的人:「項目編號[JFormattedTextField中的5位數字]當前[4種可能的狀態選項中的1項]

用戶單擊」Enter「按鈕後,然後用戶在彈出窗口中單擊「確定」,要求用戶確認要通過電子郵件發送的消息。就我的第三個問題而言,它是關於電子郵件的一部分,我認爲這將是另一個r線程後,我得到這個按鈕&文本字段的東西被剔除。

這裏的觸摸屏用戶界面的圖片我到目前爲止有: (不能發表圖片作爲一個新秀,去krisbunda.com/gui.png爲這個圖象)

問題1: 4個狀態選項(4個JButton)被包裝在一個JPanel中。 我想在「statusPanel」JPanel中將最近的按鈕推入,將背景更改爲藍色,將按鈕文本更改爲白色。

我可以在按鈕的父級JPanel上放置一個mouselistener來監聽孩子(4個狀態JButtons)上的點擊事件,然後無論上次點擊哪個按鈕,它都會變成藍色的白色文本?請指向正確的方向。

問題2: 我有一個的JFormattedTextField名爲「顯示器」,顯示爲他們點擊的數字,這是從一個StringBuffer追加名爲「當前」。 我希望文本字段只能接受總共5個數字。

當我試圖在該字段上放置一個「#####」掩碼時,當我按下數字鍵盤的按鈕時,它只會發出警告嘟嘟聲。目前我已選擇「類別:數字」和「格式:自定義」,然後在「格式:」字段中鍵入「#####」。這使我可以點擊數字按鈕並看到他們的文本顯示,但它不會阻止我輸入超過5個字符。

我正在通過「Properties> FormatterFactory」對話框執行此操作。屏幕截圖如下所示: (去krisbunda.com/text-formatterFactory.png查看本文圖片)

這裏是我到目前爲止的代碼: (我的文章太長,使用此代碼,所以請訪問:krisbunda.com/java-sampleCode.txt查看)

在此先感謝您的幫助!

回答

1

你的代碼看起來很好,你已經設置了容納所有按鈕引用領域,所以現在你只需要編寫狀態中的代碼設置按鈕,然後讓他們打電話給同一個子程序新狀態。然後,該子程序應將所有按鈕重置爲其默認顏色,然後在與新的或現有狀態對應的按鈕上設置特殊的選定顏色。

編輯:添加代碼在這裏以響應您的評論...

首先,永遠不要使用==與絃樂。否則,當你得到兩個相同但是不同的對象的字符串時,它們將不會相同,並且您的比較將失敗。

有編碼這件事,包括使用enums等等,但是這應該爲你工作的更好的方法:

// Reset all the buttons 
outsideNotReadyButton.setBackground(...); 
loadedButton.setBackground(...); 
outsideReadyButton.setBackground(...); 
shippedButton.setBackground(...); 

// Now set the one of the button's colors conditionally 
String status = ... 

if(status.equals("SHIPPED")) {shippedButton.setBackground(Color.BLUE);} 
else if(status.equals("LOADED")) {loadedButton.setBackground(Color.BLUE);} 
// ...and so on 
+0

我會這樣編碼:if(status ==「SHIPPED」){shippedButton.setBackground(Color.blue)} else {}? – Kris 2010-12-18 15:20:01

0
  1. ActionListener是按鈕更常用的方法,如在How to Use Buttons, etc討論。 A FocusListener也用於此example是以您描述的方式更改按鈕外觀的一種方法。

  2. 一個sscce只顯示您的JFormattedTextField問題會更有幫助。在文章How to Use Formatted Text Fields中可以找到幾個這樣的例子。

+0

之前我張貼在堆棧溢出,我讀了所有從Oracle網站的文章,你連接好幾次,至今還沒能把它放在一起。 – Kris 2010-11-26 22:54:49