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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятки с jcombobox 
:(
    Опции темы
4eJIoBekMoJIekyJIa
Дата 3.8.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вообщем проблема в том что почему то криво работает comboBox.setSelectedIndex(), иногда выделяется иногда нет. 
У меня в столбце таблицы в кач-ве cellEditor стоит jComboBox, есть кнопка на которую стоит выделить 6 элемент, иногда срабатывает иногда нет.
Код

import java.awt.BorderLayout;

import javax.swing.DefaultCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.JComboBox;

public class testFrame extends JFrame{

    
    private JComboBox box = null;
    private JPanel jPanel = null;  
    private JButton jButton = null;
    private JTable jTable = null;
    public testFrame() {
        super("testFrame");
        this.setSize(100, 100);
        jTable = new JTable();
        Object[] c = {"1"};
        Object[][] d = {{"1"}};
        ((DefaultTableModel)jTable.getModel()).setDataVector(d, c);

        box= new JComboBox();
        box.addItem("1");
        box.addItem("2");
        box.addItem("3");
        box.addItem("4");
        box.addItem("5");
        box.addItem("6");
        box.addItem("7");
        box.addItem("8");
        box.addItem("9");

        TableColumn col = jTable.getColumnModel().getColumn(0);
        col.setCellEditor(new DefaultCellEditor(box));
        
        jButton = new JButton();
        jButton.setText("go");
        jButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
                box.setSelectedIndex(6);    
            }
        });

        
        jPanel = new JPanel();
        jPanel.setLayout(new BorderLayout());
        jPanel.add(jButton, BorderLayout.EAST);
        jPanel.add(jTable, BorderLayout.WEST);
        
        this.setContentPane(jPanel);

    }
    public static void main(String[] args) {
        testFrame frm = new testFrame();
        frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frm.setVisible(true);
    }

--------------------
PM MAIL   Вверх
anonymouse
Дата 4.8.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Непонятно правда цель всего этого, ну да ладна.
Я так понимаю не работает потому что при клике на ячейку вызывается метод DefaultCellEditor.setValue в котором выделается тот элемент в листе который хранится в ячейке.
И вообще так не делается, напишите лучше для чего все это
--------------------
Много чего интересного...
PM MAIL   Вверх
AlCapone
Дата 5.8.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 4.8.2008
Где: Королев и Долгопр удный МО

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



Человек-МАЛЕКУЛА!!! Смотри и читай коменты в коде. Я там всё объяснил. Если чё непонятно спрашивай.
Код

import java.awt.BorderLayout;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class testFrame extends JFrame
{
    public testFrame() 
    {
        super("testFrame");
        this.setSize(200, 200);
        Object[] ColumnNames = {"Column Name"};
        Object[][] DataVector = {{"1"}};
        box= new JComboBox();
        String[] itemsOfComboBox={"1","2","3","4","5","6","7","8","9"};
        DefaultComboBoxModel boxModel=new DefaultComboBoxModel(itemsOfComboBox);
        box.setModel(boxModel);
        DefaultTableModel model=new DefaultTableModel(DataVector,ColumnNames);
        jTable=new JTable(model);

        //если таблица станет больше отводимого ей места, то появиться полоса прокрутки
        //просто так добавил, кстати заметь, что появились названия столбцов
        JScrollPane scrollPane = new JScrollPane(jTable);

        TableColumn col = jTable.getColumnModel().getColumn(0);
        col.setCellEditor(new DefaultCellEditor(box));

        JButton jButton = new JButton("go");
        jButton.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent e) 
            {
                //меняет значение в модели таблицы-это по-моему то, что тебе надо
                jTable.setValueAt(6,0,0);


                //меняет значение в редакторе, но только когда редактор (CellEditor) запущен,
                //то есть когда используешь ComboBox для редактирования, кнопка Go работает
                //если же ячейка не редактируется, то значение не меняется
                //эта фигня будет срабатывать в любой ячейке для которой ты вызываешь CellEditor
                //и только в этом случае будет менять именно для этой ячейки(не обязательно для ячейки row=0;column=0) значение в модели
                /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/box.setSelectedIndex(8);
                //проще говоря ты меняешь значение в объекте, который вызывается при редактировании ячеек, а не в самой ячейке
                //уничтожь это сам=]
            }
        });
        this.add(scrollPane,BorderLayout.CENTER);
        this.add(jButton,BorderLayout.SOUTH);
    }
    public static void main(String[] args) 
    {
        testFrame frm = new testFrame();
        frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frm.setVisible(true);
    }
    private JTable jTable;
    private JComboBox box;
}

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

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

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


 




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


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

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