2014-09-07 4 views
1

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

enter image description here

Ниже мой код

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=] 

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

+1

См. [Таблица столбцов] (http://tips4java.wordpress.com/2009/07/12/table-button-column/) для некоторых идей. –

ответ

2

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

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

2

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

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

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

+0

link [Как использовать таблицы: Редакторы и рендереры] (http : //docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender) –

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