|
|
|
JTable
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как обратиться к конкретной ячейке таблицы JTable? Ситуация следующая: создаются две таблицы n x n, в ячейке 1 таблицы вводяться данные, о во второй таблице в той же ячейке они должны отобразиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 20:39:47 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Это вам нужно действовать по следующему плану: 1. для первой таблицы переопределить метод Код: plaintext 2. (Опционально) Написать свой TableCellEditor для первой таблицы, все зависит от типов данных. Ну и это вам позволит сделать редактирование более доступным для пользователя. 3. (Опционально) Написать свои модели таблицы, так удобнее. Будут вопросы, спрашивайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 22:26:46 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь, а не могли бы дать ссылку на какой-нибудь пример, где используется что-либо подобное. Только начал осваивать java, еще многое не понятно, а на примере намного легче :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 22:44:02 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Прям подобного примера, я не встречал. В архиве примеры работы со всем что Вам надо, взято из книги Ивана Портянкина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 22:56:27 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Вот, очень хороший пример, он точно должен Вам помочь. Взято из книги "Thinking in Java" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 23:26:33 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Diablero, спасибо Вам огромное, Вы мне очень помогли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 21:16:13 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, возникает ошибка при попытке построить таблицу на основе массива dataInt из данных первой таблицы (кусок кода, на котором все валится, выделен жирным). Возникает следующая ошибка: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at test$DataModel$TML.tableChanged(test.java:117) at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280) at javax.swing.table.AbstractTableModel.fireTableDataChanged(AbstractTableModel.java:182) import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumn; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.NumberFormat; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class test extends JFrame implements PropertyChangeListener { Container cp; // JTable table; JTable table2; Integer tableSize = new Integer(5); Object[][] data; Object[][] dataArray; int[][] dataInt = new int[tableSize.intValue()][tableSize.intValue()]; int flag = 0; int hh2 = tableSize.intValue(); double amount = 5; JFormattedTextField taField; JLabel label = new JLabel("Размер таблицы:"); JButton button = new JButton("Построить таблицу"); test() { final Container cp = (JPanel) getContentPane(); cp.setLayout(new FlowLayout()); JTable table = new JTable(new DataModel(0)); // JTable table2 = new JTable(new DataModel(1)); int jj = tableSize.intValue(); for (int i = 0; i < jj; i++) { setUpColumn(table, table.getColumnModel().getColumn(i)); } cp.add(new JScrollPane(table)); cp.add(new JScrollPane(table2)); NumberFormat amountFormat = NumberFormat.getNumberInstance(); taField = new JFormattedTextField(amountFormat); taField.setPreferredSize(new Dimension(80, 23)); taField.addPropertyChangeListener("value", this); taField.setValue(new Double(amount)); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableSize = Integer.valueOf(taField.getText()); } }); cp.add(label); cp.add(taField); cp.add(button); setSize(800, 600); setLocationRelativeTo(null); } public void setUpColumn(JTable table, TableColumn Column) { JComboBox comboBox = new JComboBox(); for (int i = 0; i < 10; i++) { Integer k = Integer.valueOf(String.valueOf((int) (Math.random() * 250))); comboBox.addItem(k); } Column.setCellEditor(new DefaultCellEditor(comboBox)); DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText("Click for combo box"); table.setForeground(Color.red); Column.setCellRenderer(renderer); } class DataModel extends AbstractTableModel { int hh = tableSize.intValue(); private String[] columnNames = new String [tableSize.intValue()]; Object[][] data = new Object [tableSize.intValue()][tableSize.intValue()]; // public final Object[] longValues = new Object [PlotTable.tableSize.intValue()]; DataModel(int r) { Integer a = new Integer(r); for (int g = 0; g < hh; g++) { columnNames[g] = "Column" + (g + 1); } if (r == 0) { for (int g = 0; g < hh; g++) { for (int gg = 0; gg < hh; gg++) { data[g][gg] = a; } } addTableModelListener(new TML()); } else { for (int g = 0; g < hh; g++) { for (int gg = 0; gg < hh; gg++) { data[g][gg] = new Integer(dataInt[g][gg]); } } } } // Печатает данные при изменении таблицы: class TML implements TableModelListener { public void tableChanged(TableModelEvent e) { Integer num; for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[0].length; j++) { num = (Integer) data [j]; dataInt[j] = num.intValue(); System.out.println("dataInt="+dataInt[j]+" i="+i+" j="+j); } } JTable table2 = new JTable(new DataModel(1)); cp.add(new JScrollPane(table2)); } } public int getColumnCount() { return data[0].length; } public int getRowCount() { return data.length; } public Object getValueAt(int row, int col) { return data[row][col]; } public void setValueAt(Object val, int row, int col) { data[row][col] = val; // Указывает на появление изменений: fireTableDataChanged(); } public boolean isCellEditable(int row, int col) { return true; } } public static void main(String []arg) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new test().setVisible(true); } }); } public void propertyChange(PropertyChangeEvent e) { Object source = e.getSource(); if (source == taField) { amount = ((Number) taField.getValue()).doubleValue(); } } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2007, 12:54:12 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
ну, может мы посмотрим на стэктрэйс и подумаем где на самом деле всё валиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 09:41:18 |
|
||
|
JTable
|
|||
|---|---|---|---|
|
#18+
Вот: java.lang.NullPointerException at test$DataModel$TML.tableChanged(test.java:117) at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280) at javax.swing.table.AbstractTableModel.fireTableDataChanged(AbstractTableModel.java:182) at test$DataModel.setValueAt(test.java:137) at javax.swing.JTable.setValueAt(JTable.java:1794) at javax.swing.JTable.editingStopped(JTable.java:3167) at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:124) at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:329) at javax.swing.DefaultCellEditor$3.stopCellEditing(DefaultCellEditor.java:139) at javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:214) at javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:346) at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1197) at javax.swing.JComboBox.setSelectedItem(JComboBox.java:561) at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:597) at javax.swing.plaf.basic.BasicComboPopup$ListMouseHandler.mouseReleased(BasicComboPopup.java:749) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:232) at java.awt.Component.processMouseEvent(Component.java:5100) at javax.swing.plaf.basic.BasicComboPopup$2.processMouseEvent(BasicComboPopup.java:452) at java.awt.Component.processEvent(Component.java:4897) at java.awt.Container.processEvent(Container.java:1569) at java.awt.Component.dispatchEventImpl(Component.java:3615) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) at java.awt.Container.dispatchEventImpl(Container.java:1613) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:480) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 10:35:02 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=657&tid=2146488]: |
0ms |
get settings: |
18ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
45ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
123ms |
get tp. blocked users: |
3ms |
| others: | 330ms |
| total: | 584ms |

| 0 / 0 |
