2014-01-11 3 views
0
JTable table = new JTable(data,columnNames); 
JScrollPane pane = new JScrollPane(table); 
this.add(pane); 
this.add(table); 

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

+0

Как вы реализующего 'TableModel'? Пожалуйста, посмотрите на эту [нить] (http://stackoverflow.com/q/9647522/1057230). Надеюсь, что это могло бы ответить на это сообщение :-) –

ответ

3

Компонент может иметь только один родительский элемент.

JScrollPane pane = new JScrollPane(table); 
this.add(pane); 
this.add(table); 

Сначала добавьте таблицу в окне просмотра в ScrollPane, что хорошо, так как это приведет к тому, заголовок таблицы автоматически будет отображаться, когда GUI становится видимым.

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

Избавьтесь от:

//this.add(table); 

, а затем ScrollPane, содержащий таблицу, будут отображаться на раме.

+0

Я прокомментировал эту строку, но ее не показывал заголовок (имя столбца) сверху. Но когда я печатаю на консоли, он отображает как данные, так и имя столбца. – user2592244

+1

JTable API и следуйте ссылке на учебник Swing на тему «Как использовать таблицы» для рабочего примера. Если у вас все еще есть проблемы, отправьте сообщение [SSCCE] (http://sscce.org/), демонстрирующее проблему. Я дал свое лучшее предположение, основываясь на ваших четырех строках кода. – camickr

+0

@camickr SSCCE был «удален» в пользу [MCVE] (http://stackoverflow.com/help/mcve). Последний документ короче, размещен на Stack Exchange и был разработан консенсусом сообщества. Хотелось бы вам знать .. –

0

Посмотрите на этот пример

import java.awt.Color; 
import javax.swing.*; 
public class table extends JFrame{ 

    public table() { 
     setSize(600, 300); 
     String[] columnNames = {"A", "B", "C"}; 
     Object[][] data = { 
      {"Moni", "adsad", 2}, 
      {"Jhon", "ewrewr", 4}, 
      {"Max", "zxczxc", 6} 
     }; 

     JTable table = new JTable(data, columnNames); 
     JScrollPane tableSP = new JScrollPane(table); 

     JPanel tablePanel = new JPanel(); 
     tablePanel.add(tableSP); 
     tablePanel.setBackground(Color.red); 

     add(tablePanel); 
     setTitle("Marks"); 

     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       table ex = new table(); 
       ex.setVisible(true); 
      } 
     }); 
    } 
} 
+0

Нет никакой причины для разворачивания панелей ... лучше не отвечать на простые ошибки кодирования сложными примерами , В стороне: Пожалуйста, изучите соглашения об именах java и придерживайтесь их. – kleopatra

+0

@ kleopatra Я понял. Благодаря!! – Aarav

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