| Виды программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
JFileChooser, как узнать FileFilter? картинка в таблице JCheckBox (true/false), Как узнать?? диаграммa последовательности (sequence diagram), Как нарисовать DataFlow diagram Как вырезать в Image часть изображения? Как сделать text folding? FileLock под JRE 1.5.0 Удаление node из JTree, как делается? выбор нескольких строк в таблице Реализация Drag & Drop JPanel или как ее заменить на другую JFormattedTextField, getString или как ? Работа с GUI Designerom в IDEA, Расскажите вкратце как Как Вы относитесь к курящим девушкам? Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки Добавление/удаление строк в JTable, Как это делается динамически? Java+базы данных, Построение шаблонов запросов! Создание меню Работа с GridLayout, Как красиво разместить компоненты GUI Designer, Где он? Разработка на Intellij IDEA. Можно ли?, Разработка интерфейсa приложения undecorated window, как сделать? System Tray : how to?, как поместить прогу в system tray? Вопросы по JTable, Как сделать в JTable проблема с обновлением модели данных подскажите с JFormattedTextField() редактирование ячейки зашел в тупик Как поменять ширину закладки?, в JTabbedPane Помогите с запросом для MySql на Java построение JTree в потоке Как забрать String с диалогового окна???, Чтобы вставить их в JList JTable и ее строки window allways on top JFileChooser сохранение файла Выделение строки в JTable Как в JList пол-ть массив выделх эл-ов? Модальное окно JTable и ширина столбцов Вставка на ячейки в таблицу... Проблема с деплоем jLayeredPanel Help need, Слои перекрывают друг друга jPanel фенечки..., put image JFormattedTextField, После setText перестает работать маска Несколько ячеек в ячейке таблицы, Реально ли? actionListener для изменения значения, для JTextField Получить длинну строки в пикселах Отображение данных в таблице, JTable Двойной клик по строке таблица, JTable JButton in JTable, как? JScrollPane + inner stuff, Swing problems Как в java сделать .exe-ник? Квадратик в JPanel, красный, зеленый... JTable & TableModel JList с заголовком, как у таблиц KeyListener, как правильно обслужить ENTER Размеры панелей, как с ними воевать Tree1.getSelectionPath(); Проблема с ItemListener или у меня что-то не так? UserObject в jTree Как вставить в JPanel уже имеющий класс с формами Как Вы относитесь к курящим девушкам? conditional statement Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки Ребята, есть проблема по Combobox ещё один вопрос про Swing, JScrollPane + JEditorPane Панель с производным размещением???, Проблеммы совмещения JTable+Listener Как работать с Full-Screen Exclusive Mode. |
Платные хостинги Раскрутка сайта Книги по программированию JTable & TableModel
- Гляньте на код, пожалуйста. Есть проблема.Код public class SqlDataTabModel extends AbstractTableModel implements Observer { private ArrayList colNames; //ArrayList of String - column names private ArrayList rows; //ArrayList of SqlRow - rows//..... public String getColumnName(int col) { return (String)colNames.get(col); } public int getRowCount() { return rows.size(); } public int getColumnCount() { return colNames.size(); } public Object getValueAt(int row, int col) { Object value; if (row <= getRowCount() && col <= getColumnCount()) { String colName = (String)colNames.get(col); value = ((SqlRow)rows.get(row)).get(colName); } else { value = "Out of bounds!"; } return value; } public boolean isCellEditable(int row, int col) { return false; } public void update(Observable o, Object arg) { if (o instanceof SqlDataModel) { SqlDataModel dataModel = (SqlDataModel)o; ArrayList selectedInstances = dataModel.getSelectedInstances(); ArrayList dataBeans = dataModel.getDataBeans(); colNames = deriveColNames(dataBeans); rows = deriveRows(colNames, dataBeans); System.out.println("Testing: value in JTable in (10, 12) is: " + getValueAt(10, 12)); fireTableDataChanged(); } }//......}highlightSyntax('javaMDZiZG','java');Ставлю ету модель для таблицы и при апдейте модели таблица не апдейтится! Что именно я делаю не так, и чего не хватает? - Смею предположить Object[][] rows, а не ArrayList. - Нет, ето не проблема - нет запрета хранить данные в любом виде. Решил проблему, поменяв "fireTableDataChanged();" на "fireTableChanged(null);", но как-то мне ета конструкция выглядит кривовато. Есть более правильные альтернативы? - По моему проблема в том, что у тебя не только данные в таблице поменяться могут, но и сама структура, т.к. ты обновляешь также colNames. Очень возможно, что метод getColumnName(int) не вызывается, при обработке fireTableDataChanged(), потому как data changed . Возможно нужно ещё использовать fireTableStructureChanged() - Да, название и кол-во колонн тоже может поменяться, но fireDataChanged(null) работает хорошо. Так что, скажем, проблема решена.Но есть следующая!Иногда получается так, что колонн очень много (а иногда - что всего 4-5) и они очень сильно сжимаются так, что ничего не видно. Как сделать так, чтобы всегда ширина колонны была определена, и в случае большого кол-ва колонн можно было просто скроллить вправо? (JTable естественно сидит в JScrollPane, но ето не помогает)Глянул на TableColumnModel, но там нет методов определения ширины столбцов. Добавлено @ 13:06 И еще: как сделать, чтобы первые два столбца всегда имели синий фон, независимо от ничего (несмотря на то, что столбцы и их названия меняются)? - За то как выглядят ячейки в таблице отвечает TableCellRenderer. Чтобы изменить вид , нужно переписать метод getTableCellRendererComponent либо используется DefaultTableCellRenderer , который возвращает при вызове метода getTableCellRendererComponent JLabel. А как известно, JLabel имеет методы setPreferedSize и setBackground. - Насчет первых двух столбцов:Код // .... TableColumn column = table.getColumn(table.getColumnName(0)); column.setCellRenderer(new ColumnRenderer()); column = table.getColumn(table.getColumnName(1)); column.setCellRenderer(new ColumnRenderer());// ....public class ColumnRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if(column == 0 || column == 1) { setForeground(Color.blue); } else { setForeground(Color.BLACK); } return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } } highlightSyntax('javaZTJmOD','java'); - ---------------------Насчт первого вопроса - посмотри :http://java.sun.com/j2se/1.4.2/docs/api/ja...ResizeMode(int)http://java.sun.com/j2se/1.4.2/docs/api/ja...html#doLayout() - Спасибо, ето мне очень помогло. Я тебе уже должен три плюса. И Gretchen один =) - Про размеры. Самое простое: отключить авторесайз колонок.Код table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );highlightSyntax('javajA0YWQ','java'); - Так и сделал =) |