/ / Робота з JTable в IntelliJ IDEA - intellij-idea, jtable

Робота з JTable у IntelliJ IDEA - intellij-idea, jtable


Я створив jtable у формі gui в Intellij, і я не бачу даних. Найдивніше, що коли я використовую це, створюю форму в intellij код працює.
я використав найпоширеніший приклад
String[] columnNames = {"First Name", "Last Name"};
Object[][] data = {{"Kathy", "Smith"},{"John", "Doe"}
і потім
JTable table = new JTable(data, columnNames);
Але я не отримую даних.
Це через менеджера макетів?
будь-яка допомога в продовженні роботи з intellij gui та jtable?
будь-який хороший приклад jtable + gui форма intellij?

Відповіді:

9 для відповіді № 1

При використанні IDEA GUI Designer, JTable створюється для вас автоматично, якщо у вас є new JTable(...) у вашому коді він перекриває об’єкт таблиці, створений IDEA, і всі властивості, налаштовані для таблиці в Дизайнері, будуть втрачені.

Отже, у вас тут є два підходи. Одне - покластися на IDEA для створення таблиці та встановлення її властивостей, а потім використовувати table.setModel(dataModel); для надання даних у вашу таблицю з dataModel.

Другий підхід полягає в тому, щоб динамічно створити таблицю зі свого коду, а потім додати цю таблицю до наявної JScrollPane або іншої панелі форми через scrollPane.setViewportView(myTable);.

IDEA також має більш вдосконалений підхід Спеціальні створення. Якщо увімкнути цей прапорець для JTable у формі, додається IDEA createUIComponents() методом до зв'язаного класу, де ви створюєте цей компонент вручну ... = new JTable(...).

Ти можеш завантажити повний зразок проекту і експериментувати з різними підходами.


1 для відповіді № 2

Для мене це працює в IntelliJ:

package swing;

import javax.swing.*;

/**
* JTableTest
* User: Michael
* Date: 11/7/10
* Time: 4:49 PM
*/
public class JTableTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame("JTable Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = createTable();
JScrollPane scrollPane = new JScrollPane(table);
frame.getContentPane().add(scrollPane);
frame.pack();
frame.setVisible(true);
}

public static JTable createTable()
{
String[] columnNames = {"First Name", "Last Name"};
Object[][] data = {{"Kathy", "Smith"},{"John", "Doe"}};
JTable table = new JTable(data, columnNames);
table.setFillsViewportHeight(true);

return table;
}
}