Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 12:52   #1
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию Обработчик событий кнопки

Доброго времени суток! Пытаюсь в NetBeans написать программку. В текстовое поле JTextField вводится число. Нажимаем кнопку - на фрейме появляются еще поля JTextField в зависимости от введенного числа. Не работает обработчик кнопки. Помогите, пожалуйста, я начинающий.
Код:
public class MyFrame_3 extends JFrame {
    JTextField field;
    JTextField a;
    JButton button;
    Container c; 
    JPanel panel;
    public static void main(String[] args) {
        // TODO code application logic here   
        MyFrame_3 m = new MyFrame_3 ("***");
      m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      m.setVisible(true);
    }
   public MyFrame_3 (String str){
   super(str);
         Container c = getContentPane ();
   JPanel panel = new JPanel ();
   c.add (panel, BorderLayout.SOUTH);
         JLabel label = new JLabel ("Количество строк");
         panel.add (label);
   field = new JTextField ("                ");
   panel.add (field);
   JButton button = new JButton ("Ввод");
   panel.add (button);
   Handler handler = new Handler ();
   button.addActionListener(handler);
        setSize (1000, 600);
        setVisible (true);
   }
   class Handler implements ActionListener {    
   public void actionPerformed (ActionEvent E){ 
     int input = Integer.getInteger(field.getText());
     int i;
     for (i = 0; i<= input; i++){
     a = new JTextField (45);
     c.add (a, BorderLayout.CENTER);}
   }
   }
   }


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.04.2013 в 13:11.
mixt73 вне форума Ответить с цитированием
Старый 24.04.2013, 23:42   #2
dox07
Пользователь
 
Регистрация: 16.02.2010
Сообщений: 26
По умолчанию

Вот код из моего проекта, делай по аналогии:

Код:
JButton btnLogin = new JButton("Выход");
		btnLogin.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				
			}
		});
dox07 вне форума Ответить с цитированием
Старый 25.04.2013, 15:32   #3
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию

Все равно ничего на фрейме не отображается. В любом случае, спасибо за то, что откликнулись.
mixt73 вне форума Ответить с цитированием
Старый 25.04.2013, 17:21   #4
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию

Для начала хотя бы отобразить просто текстовое поле по нажатии кнопки. Потом уже добавлю считывание с тектового поля.
mixt73 вне форума Ответить с цитированием
Старый 25.04.2013, 21:45   #5
dox07
Пользователь
 
Регистрация: 16.02.2010
Сообщений: 26
По умолчанию

1. Надо получить объект контейнера, в кот. надо добавлять текстовые поля.
2. Извлечь строку из источника - текстового поля
3. Создать ( и если необходимо сразу задавать в них значения) объекты новых текстовых полей и добавить в контейнер, полученные на шаге 1.
dox07 вне форума Ответить с цитированием
Старый 26.04.2013, 06:53   #6
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

а перерисовку необходимо делать? по-моему там еще не хватает перерисовки, что-то наподобии repaint или типа того
Olejik вне форума Ответить с цитированием
Старый 26.04.2013, 12:12   #7
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию

NetBeans все равно выдает ошибку
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Может я неправильно записываю действия в обработчике?
Код:
public void actionPerformed(ActionEvent ae) {
    JPanel p = new JPanel ();
    panel3.add (p);
     JTextField b = new JTextField (45);
    p.add (b, BorderLayout.NORTH);
    b.setVisible(true);
    }
Я уже несколько раз переписывала код. Этот с панелями без контейнера. Есть панель, на нее добавлена другая панель с кнопкой, меткой и текстовым полем. Есть еще в центре третья панель, на которую и хочу выводить поля для ввода текста.

Последний раз редактировалось mixt73; 26.04.2013 в 12:15. Причина: Изменение кода
mixt73 вне форума Ответить с цитированием
Старый 26.04.2013, 14:33   #8
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Код:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class MyFrame_3 extends JFrame {
    JTextField field;
    JTextField a;
    JButton button;
    Container c;
    public JPanel panel;
    public static void main(String[] args) {
        // TODO code application logic here   
        MyFrame_3 m = new MyFrame_3 ("***");
      m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      m.setVisible(true);
    }
    public MyFrame_3 (String str) {
       super(str);
       c = getContentPane ();
       panel = new JPanel ();
       c.add (panel, BorderLayout.SOUTH);
       JLabel label = new JLabel ("Количество строк");
       panel.add (label);
       field = new JTextField ("1");
       panel.add (field);
       JButton button = new JButton ("Ввод");
       Handler handler = new Handler ();
       button.addActionListener(handler);
       panel.add (button);
       setSize (1000, 600);
       setVisible (true);
   }
   class Handler implements ActionListener {
       @Override
       public void actionPerformed (ActionEvent E){
           int input = 10;
           int i;
           for (i = 0; i<= input; i++) {
               JTextField a = new JTextField (45);
               panel.add(a);
           }
           panel.revalidate();
           //c.repaint();
       }
   }
}
а вылетало из-за:int input = Integer.getInteger(field.getText()) ;
у меня лично из-за него вылетело
источник, откуда взял пример:
Olejik вне форума Ответить с цитированием
Старый 28.04.2013, 15:11   #9
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию

Спасибо, поле добавляется.
mixt73 вне форума Ответить с цитированием
Старый 06.05.2013, 10:21   #10
mixt73
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 11
По умолчанию

В обработчике поля добавляются согласно указанному в текстовом поле числу. А можно ли как-то пронумеровать добавленные строки (текстовые поля должны содержать номера по порядку).
Код:
public void actionPerformed (ActionEvent e){
try{
String input = fd.getText(); 
x = Integer.parseInt(input);
for (int i = 0; i <= x-1; i++){
    JTextField a = new JTextField (40);
 p2.add (a);
 p2.revalidate();}}
mixt73 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик событий для добавленой в документ кнопки Mmarc Microsoft Office Word 2 26.12.2012 05:34
обработчик событий IIaJIbI4 БД в Delphi 2 07.06.2011 15:09
С++ Обработчик событий hungry Общие вопросы C/C++ 11 12.05.2011 13:18
обработчик событий нажатия кнопки legendary HTML и CSS 1 06.01.2011 19:28
обработчик событий кнопки Dmitriy.Ch Общие вопросы C/C++ 0 04.07.2009 09:35