Работа с JTable в IntelliJ IDEA - PullRequest
       9

Работа с JTable в IntelliJ IDEA

4 голосов
/ 08 ноября 2010


Я создал jtable в виде графического интерфейса в 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?

Ответы [ 2 ]

11 голосов
/ 08 ноября 2010

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

Итак, у вас есть 2 подхода.Один из них - полагаться на IDEA для создания таблицы и установки ее свойств, а затем использовать table.setModel(dataModel); для предоставления данных в вашу таблицу из dataModel.

Второй подход - динамическое создание таблицы из вашего кода и добавлениеэта таблица в существующую JScrollPane или другую панель формы через scrollPane.setViewportView(myTable);.

IDEA также имеет более продвинутый подход, называемый Custom Create .Если вы включите этот флажок для JTable в форме, IDEA добавит метод createUIComponents() в связанный класс, где вы создадите этот компонент вручную, например ... = new JTable(...).

Вы можете загрузить полный пример проекта и экспериментируйте с разными подходами.

1 голос
/ 08 ноября 2010

Это работает в 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...