Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> листенер к кнопкам 
V
    Опции темы
kostay
Дата 22.10.2007, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



ситуация такая:

в гуи метод setController© который ставит на каждую кнопку listener, вот так: 
Код

new_button.addActionListener(c)


в гуи метод createPanel(ArrayList list) который создаёт кнопки и добавляет их в панель вот так:
Код

for(int i =0; i< list.size(); i++) {
    new_button = new JButton(list.get(i));
    panel.add(new_button);
}

кнопки встают в столбец

в контроллере вот ето:
Код

if (e.getSource().equals(gui.new_button)) {        
    System.out.print(((JButton)e.getSource()).getText());
}


метод setController вызывается перед createPanel, и он удаляет листенеры со всех компонентов потом ставит заного... так надо.

new_button задана переменной класса вот так: 
Код

class Gui {
JButton new_button = new JButton("");
...


вопрос по4ему листенер добавляется только к последней кнопке и как исправить?
PM MAIL   Вверх
kostay
Дата 22.10.2007, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



то4нее setcontroller стоит после createPanel, тогда к последней кнопке, а если до то нi4ego вобше
PM MAIL   Вверх
dorogoyIV
Дата 22.10.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



а если так сделать?
Код

JButton [] new_button=new JButton [list.size()];
for(int i=0; i<list.size(); i++)
{
 new_button [i]=new JButton(list.get(i));
 panel.add(new_button [i]);
 new_button [i].addActionListener(c);
}

PM MAIL   Вверх
Lisus
Дата 22.10.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 21.10.2007

Репутация: 1
Всего: 2



А ты покакжи сам слушатель... если у него есть что-то типа 

Код

..._mouseAdapter extends MouseAdapter {
    private Object adaptee;
    ..._mouseAdapter(gig adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.jButton1_mouseClicked(e);
    }
}


Тогда возможно понятно пеочему

Добавлено через 3 минуты и 21 секунду
Извините ступеил...
Но все равно Лиснер в Студию
PM MAIL   Вверх
Lisus
Дата 22.10.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 21.10.2007

Репутация: 1
Всего: 2



а вот такой код работает у тебя? У меня всё прекрасно пашет
Код

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

public class gig extends Frame {
    public gig() {
        this.setLayout(new FlowLayout());
        ArrayList list = new ArrayList();
        list.add("123");
        list.add("456");
        list.add("789");
        for (int i = 0; i < list.size(); i++) {
            new_button = new JButton((String) list.get(i));
            new_button.addMouseListener(c);
            this.add(new_button);
        }
    }

    JButton new_button = new JButton("");

    public static void main(String[] args) {
        gig gig = new gig();
        gig.setBounds(0, 0, 500, 500);
        gig.show();
    }

    gig_jButton1_mouseAdapter c = new gig_jButton1_mouseAdapter(this);
    JButton jButton1 = new JButton();
    public void jButton1_mouseClicked(MouseEvent e) {
        System.out.println("345667");
    }
}

class gig_jButton1_mouseAdapter extends MouseAdapter {
    private gig adaptee;
    gig_jButton1_mouseAdapter(gig adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.jButton1_mouseClicked(e);
    }
}


PM MAIL   Вверх
kostay
Дата 23.10.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



я всётаки стал использавать массив, пихать туда кнопки и уже 4ерез него ставить на елементы ЛИСТЕНЕРЫ


protected ArrayList<JButton> note_button_list = new ArrayList<JButton>();

.....

Код

//making notebuttons and adding them to scrollpane
        for (int i = 1; i <= notelist.size(); i++) {
            notebutton = new myNoteButton(notelist.get(i - 1), i);
            notebutton.setName(idlist.get(i - 1)); //for sorting
            idpanel.add(notebutton);
            note_button_list.add(notebutton);
        }



controller ->

Код

//idpanel
        for(int i=0; i<gui.note_button_list.size(); i++){
            if (e.getSource().equals(gui.note_button_list.get(i))) {
                ......

            }
        }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.