2012-05-01 5 views
1

Я создаю Swing GUI, я использую серию JTextField. Я хочу иметь возможность добавлять настраиваемое свойство в текстовое поле. Это будет использоваться для завершения вычисления, когда фокус потерян, например.Пользовательский компонент

JTextField1.getCustomePram() * user input 

Я хочу, чтобы текстовое поле, которое будет иметь заданное значение, то для умножения £ 20 * 5. Таких паров по умолчанию будут 20, и пользователь поместит Кол-во в, и при потере фокуса на расчет будет выполнен.

Я использую Netbeans для создания графического интерфейса, я пробовал расширять JTextField, но, честно говоря, я не уверен, что делать, любые советы или если я собираюсь сделать это совершенно неправильно, пожалуйста, дайте мне знать.

+1

зависит от типа недвижимости и причины, по которым вы хотите добавить любое свойство. – mKorbel

+0

Я хочу текстовое поле, которое будет иметь заданное значение, оно предназначено для умножения £ 20 * 5. Таким образом, по умолчанию будет 20, и пользователь поставит qty и при потере фокуса расчет будет выполнен. WChargin ответил на заданный вопрос, просто нужно немного помочь с пользовательским параметром. – user1368528

+0

, тогда не [забудьте принять ответ] (http://meta.stackexchange.com/a/65088/164879) – mKorbel

ответ

4

Я хочу, чтобы текстовое поле, которое будет иметь заданное значение, то для умножения £ 20 * 5. Таких паров по умолчанию будет должно быть 20, а пользователь будет вводить qty, а при потере фокуса расчет будет выполнен. .. если я собираюсь сделать это совершенно неправильно, пожалуйста, дайте мне знать.

Вы делаете это совершенно неправильно.

Для этого я могу использовать либо отключенное текстовое поле или ярлык для цены единицы товара (£ 20), так и JSpinner для количества (5). Вместо того, чтобы делать расчет по фокусу потерян, add a change listener и покажите пользователю новое общее (и общее, если это необходимо) упорядоченное изделие (ы) в «реальном времени» - при изменении количества.

Нужно посмотреть, как мне нужно реализовать идеи на Java.

Хорошее место для поиска - Visual Guide to Swing Components. Объедините их в макет для сложных групп компонентов.

+2

Который мог бы дать больше +1.Вместо того, чтобы помогать работать с большим трудом, чтобы расширить JTextField и сделать с ним странные вещи, приходят с достойным решением с достойным интерфейсом. Мне нравится. – Robin

+0

Хорошо Спасибо за вашу помощь. Я собираюсь переосмыслить, как я это сделаю. Я новичок в Java и исхожу из фона PHP. Необходимо посмотреть, как мне нужно реализовать идеи на Java. – user1368528

+0

См. Также редактирование с 3-ей ссылкой. Рад, что я мог бы поговорить с вами поближе, ваши пользователи будут вам благодарны. :) –

4

Как пользователь1329572 говорит, вы захотите подкласс (или продлить) JTextField. Вы можете сделать это следующим образом:

public class MyTextField extends javax.swing.JTextField { 
    private String /* or whatever type */ myCustomParam; 

    public String getCustomParam() { 
     return myCustomParam; 
    } 

    public void setCustomParam(String param) { 
     myCustomParam = param; 
    } 
} 

Везде, где нужно использовать JTextField, вы можете также использовать MyTextField. Все остальные функции будут работать.

Что касается фокуса: для обнаружения фокусировки, используйте FocusAdapter:

MyTextField mtf = new MyTextField(); 
mtf.addFocusListener(new java.awt.event.FocusAdapter() { 
    @Override 
    public void focusLost(java.awt.event.FocusEvent e) { 
     System.out.println("I lost focus."); 
    } 
} 
+0

Хорошо спасибо за помощь user1329572 и WChargin. Этот настраиваемый параметр, могу ли я установить это через меню свойств в netbeans, потому что, если я смотрю на код, который сгенерирован, похоже, какой-либо способ установить это значение? – user1368528

+0

Везде, где вы хотите установить значение, введите код 'setCustomParam (значение)', где значение - это значение, которое вы хотите установить. – wchargin

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