2010-11-26 4 views
1

Я пишу свою первую программу Java (в Netbeans), и я потерялся. На данный момент у меня есть 2 вопроса, если кто-то добр, чтобы помочь мне.Изменить цвет JButton, если выбрано, & Установить маску на JFormattedTextField?

Вот что программа должна делать:

взять 1 из 4 «статуса» вариантов, плюс 5-значный номер (оба из этих элементов вводятся пользователем через монитор с сенсорным экраном) и затем отправьте эту информацию кому-то, у кого есть строка темы: «Пункт № [5-значный номер из JFormattedTextField] в настоящее время [1 из 4 возможных параметров состояния].

Команда электронной почты будет командовать после нажатия пользователем кнопки« войти », а затем пользователь нажимает «ОК» на всплывающее окно, которое просит пользователя подтвердить сообщение, которое должно быть отправлено по электронной почте. Что касается моего третьего вопроса, то речь идет о части электронной почты, и я решил, что это будет r нить после того, как я получу эту кнопку & текст полевого материала сглажено.

Вот изображение сенсорного экрана пользовательского интерфейса у меня до сих пор: (не может отправлять изображения, как новобранец, перейдите к krisbunda.com/gui.png для этого изображения)

Вопрос № 1: 4 состояния (4 JButtons) завернуты внутри JPanel. Я хочу, чтобы последняя кнопка была нажата в JPanel «StatusPanel», чтобы изменить фон на синий, а текст кнопки - на белый.

Могу ли я поместить на основной родительский элемент JPanel mouselistener для прослушивания событий щелчка на дочерних элементах (4 состояния JButtons), а затем, какая бы ни была нажата последняя кнопка, она станет синим с белым текстом? Пожалуйста, укажите мне в правильном направлении.

Вопрос № 2: У меня есть JFormattedTextField под названием «дисплей», который показывает число, как они кликали, которые добавляются из StringBuffer под названием «ток». Я хочу, чтобы текстовое поле принимало всего 5 чисел.

Когда я попытался наложить маску «#####» на поле, это будет звучать только звуковой сигнал, когда я нажимаю кнопки цифровой клавиатуры. В настоящее время я выбрал «Категория: число» и «Формат: пользовательский», а затем напечатал «#####» в поле «Формат:». Это позволяет мне нажимать цифровые кнопки и видеть их текст, но это не мешает мне печатать более 5 символов.

Я делаю это через диалоговое окно «Свойства> FormatterFactory». Снимок экрана показан ниже: (перейти к krisbunda.com/text-formatterFactory.png для просмотра изображения)

И вот код, который я до сих пор: (мой пост был слишком долго с этим кодом, так перейдите по ссылке: krisbunda.com/java-sampleCode.txt для просмотра)

Заранее благодарим за любую помощь!

ответ

1

Ваш код выглядит хорошо, и у вас уже есть поля, установленные для держать ссылки на все ваши кнопки, так что теперь вам просто нужно написать код внутри состояния установки кнопки, а затем сделать их вызов подпрограммы с новый статус. Эта подпрограмма должна затем сбросить все кнопки до цвета по умолчанию, а затем установить специальный выбранный цвет на кнопке, которая соответствует новому или существующему статусу.

Edit: добавления кода здесь в ответ на ваш комментарий ...

Во-первых, никогда не используйте == со строками. Вы ДОЛЖНЫ использовать equals(), иначе, когда вы получите две строки, которые идентичны, но являются разными объектами, они не будут одинаковыми, и ваши сравнения не удастся.

Есть гораздо более эффективные способы кодирования от этого, в том числе с использованием 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. An 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

Смежные вопросы