Невозможно добавить JButtons, упакованные в JPanel, в JTable

1

У меня есть JTable, где последний столбец таблицы предназначен для добавления 2 кнопок. Ниже приведен формат моего JTable.

Изображение 174551

Ниже мой код

private class ViewLawyersDisplayData extends ComponentAdapter
     {
        @Override
        public void componentShown(ComponentEvent e) 
        {
            dbConnector = new DBHandler();
            dbConnector.makeConnection();

            ResultSet rs =  dbConnector.selectAllLawyerDetails();

            if(rs==null)
            {
                JOptionPane.showMessageDialog(null,"The table is empty");
            }
            else
            {
                try
                {
                    while(rs.next())
                    {
                        int id = rs.getInt("lawyer_id");
                        String name = rs.getString("Name");
                        String address = rs.getString("Address");
                        String email = rs.getString("Email");
                        String phone = rs.getString("Phone");

                        JButton update = new JButton("Update");
                        JButton delete = new JButton("Delete");

                        JPanel btnPanel = new JPanel();
                        btnPanel.setLayout(new FlowLayout());
                        btnPanel.add(update);
                        btnPanel.add(delete);

                        Object[]row = {id,name,address,email,phone,btnPanel};

                        DefaultTableModel model = (DefaultTableModel) viewLawyersTable.getModel();
                        model.addRow(row);
                    }
                }
                catch(SQLException sqlE)
                {
                    JOptionPane.showMessageDialog(null,sqlE.getLocalizedMessage());
                }
            }
        }
     }

Однако я не могу добавить кнопки в финальные столбцы. Вместо того, чтобы показывать кнопки, он показывает некоторый текст ошибки в столбце. Ниже приведен текст ошибки, который он мне показывает.

javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

Как я могу исправить эту проблему?

Теги:
swing
jbutton
jtable
flowlayout

2 ответа

2
Лучший ответ

Вы не можете добавлять компоненты Swing в таблицу, потому что таблица не используется для отображения реальных компонентов.

См. Столбец столбца таблицы для одного решения, которое предоставляет рендерер/редактор для кнопки в столбце таблицы.

2

Вы смешиваете модель и представление. Обратите внимание, что модель - это данные для отображения. В случае id это целочисленное значение, а в случае name - String. У вас также есть несколько других строк в вашей модели.

Вывод, который вы видите, не является сообщением об ошибке. Это просто результат вызова toString() на вашем JPanel потому что вы рассматриваете его как часть модели, а не отображаемое представление.

Поскольку ваш JPanel должен отображать компоненты пользовательского интерфейса, это представление. Вам нужно больше узнать о JTable, чтобы узнать, как настроить представление в каждом столбце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню