2013-05-16 12 views
1

Хорошо, поэтому я пытался работать над этим, но я полностью застрял, я уверен, что это довольно просто.Как печатать JTextField в JTable?

Итак, у меня есть набор JTextField, который я хочу напечатать на JTable. Как я могу это сделать? Это часть моего JTable кода:

static String[] vdLabel = {"Date", "Trans. Type", "Check No.", "Trans Description",  "Payment/Debit(-)", "Deposit/Credit(+)", "Balance"}; 
static DefaultTableModel viewTable = new DefaultTableModel(vdLabel,0); 
static JTable viewLabel = new JTable(viewTable); 

Я хочу, чтобы поместить эти переменные в соответствии с «Дата» «Транс Тип» и т.д.

static JTextField dateTrans = new JTextField(); 
static JTextField typeOfTrans = new JTextField(); 
static JTextField checkNo = new JTextField(); 

Если вы не понимаете, о чем я пытаясь сделать вот маленькую картинку, которая может помочь.

http://www.javalobby.org/articles/jtable/images/img2.png

В этой картине есть «Title» «Исполнитель» и «Альбом» это моя строка переменной «vdLabel»

Как я могу добавить строку для даты и т.д., чтобы vdLabel, а затем добавить это в JTable?

+1

Прежде всего, если столбцы являются строками, вы можете дважды щелкнуть по ним и изменить их по умолчанию. Не могли бы вы объяснить, на что вы хотите, чтобы ваш конечный результат выглядел? Похоже, вы можете просто добавить строку в JTable, и это будет то, что вы хотите. –

+1

Пусть стол и модель позаботятся об этом. Сохранение 'Date' из метода' getColumnClass' для соответствующего столбца позволит таблице использовать встроенные средства визуализации и редакторы. Если вы предпочитаете, вы можете установить свой собственный. Взгляните на [Как использовать таблицы] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) для получения более подробной информации. – MadProgrammer

+0

Итак, в основном моя программа - это банковская программа через графический интерфейс. На одной карте находится JTextField, и пользователь вводит строку или float из этого окна карты. Как только этот пользователь вводит строку в JTextField, я хочу захватить эту конкретную и поместить ее в JTable. Но пользователь не должен просто просто ввести JTable. – user2318083

ответ

2

Если вы хотите, чтобы некоторые из ваших ячеек таблицы редактировались, вы не совсем это делаете. Вместо использования DefaultTableModel вы используете свой собственный подкласс AbstractTableModel, и вы соответствующим образом переопределяете isCellEditable. Вы также переопределяете getValueAt, возвращая java.util.Date s для дат. Swing будет использовать соответствующие рендереры и редакторы на основе значения.

Посмотрите на Java Tutorial on How to Use Tables, прежде чем делать что-либо еще. В любом случае убедитесь, что у вас есть модель. Затем, если вы динамически добавляете строки в таблицу, вы должны иметь кнопку в конце каждой строки. При выборе этого параметра следует вызвать действие, которое заставляет контроллер добавлять запись в модель. Затем контроллер должен отправить событие TableModelChanged. JTable должен быть зарегистрирован в контроллере, поэтому он получает событие и перерисовывает себя.

+0

Я не хочу, чтобы ячейки редактировались, но я хочу иметь возможность получать переменные с другой карты. Например, кнопка открывает окно для ввода информации. Пользователь вводит эту информацию, например, «Имя» и т. Д. Я хочу иметь возможность захватить эту переменную имени и поместить ее в JTable в другое окно карты. Так что JTable не редактируется. – user2318083

+0

Используйте модели и события. Не пытайтесь добавить JTextField в JTable. Когда пользователь меняет JTextField, он отправляет ActionEvent своим зарегистрированным ActionListeners. Его Документ также отправляет DocumentEvent своим слушателям. Напишите ActionListener, который обновит модель вашей программы. Напишите событие TableModelChanged, которое прослушивает JTable. Не пытайтесь делать все в классах Swing. –

+0

Спасибо! Я заработал! – user2318083

2

Например, кнопка открывает окно для ввода информации. Пользователь вводит эту информацию, как, «Имя» и т.д. Я хочу, чтобы иметь возможность захватить эту переменную имя и поместить его в JTable на другом окне карты

Когда пользователь нажимает на кнопку «Сохранить» на этот modal JDialog вы можете просто получить данные из текстовых полей, а затем добавить строку в DefaultTableModel с использованием метода addRow(....).

Смежные вопросы