2015-05-15 4 views
0

Я довольно новичок в Javas swings, так что извините, если это что-то тривиальное. Это конструктор, я исключил ненужные элементы формы. (Я попытался запустить код короче, так как это, но по-прежнему появляется проблема)Добавление JScrollPane в JTable не отображается

//This just opens a connection to MySQL server, this doesn't create any problems. 
bp = BazaPodataka.getBaza(); 

//Forming the main frame.. 
JFrame frame = new JFrame(); 
{ 
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    frame.setBounds(d.width/2 - sirina/2, d.height/2 - visina/2, sirina, visina); 
} 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.getContentPane().setLayout(new BorderLayout(0, 0)); 

//Adding a layered pane so I can place items inside the form more 'freely' 
JLayeredPane layeredPane = new JLayeredPane(); 
frame.getContentPane().add(layeredPane, BorderLayout.CENTER); 

    //Adding a table 
JTable table = new JTable(); 
String[] rowData = {"Name:", "Price:", "Cathegory:", "Sum:"}; 
DefaultTableModel model = new DefaultTableModel(rowData, 0); 
JScrollPane skrol = new JScrollPane(table); 
table.setModel(model); 
//The 2 lines below work as intended 
ResultSet rs = (ResultSet) bp.query("SELECT * FROM table"); //This calls a query   
popuniTabelu(rs, model); //This populates the table. 
table.setBounds(10, 110, 500, 350); 
table.setEnabled(false); 
table.setShowHorizontalLines(false); 
layeredPane.add(table); 

Наполнение таблицы и отображения это не проблема, есть достаточно информации внутри «таблицы» таблицы, что пользователь даже потребности для прокрутки вниз.

Но вот где проблема начинается, свиток не отображается. Как это реализовать? Я попытался следующие решения, которые я нашел на Google, но они в значительной степени подвести итоги по:

JScrollPane scroll = new JScrollPane(table); 

который просто не работает в моем случае.

Проблема может быть тривиальной, если это так, извините, я все еще участвую в качелях. Кроме того, извините за мой плохой английский, это не мой родной язык. :)

Кроме того, если есть что-то, что я забыл включить, сообщите мне.

Спасибо!

+0

у вас есть полная программа? – tim

+2

@tim * «У вас есть полная программа?» * «Полная программа» может быть тысячами строк кода. Обычно мы предпочитаем [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Short, Self Contained, Correct Example). Жесткий код некоторых данных для замены БД. О, и .. –

+1

.. Java GUI должны работать с разными ОС, размером экрана, разрешением экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –

ответ

3

Вы добавляете свои table в 2 компонентов:

JScrollPane skrol = new JScrollPane(table); 

и

layeredPane.add(table); 

Из-свинга компонента могут иметь только один родительский компонент вторых Постулатов переопределения первым, так что ваш JScrollPane пуст. Кажется, вам нужно удалить layeredPane.add(table);

Как уже упоминалось here

Каждый компонент GUI может содержаться только один раз. Если компонент уже находится в контейнере, и вы пытаетесь добавить его в другой контейнер, компонент будет удален из первого контейнера, а затем добавлен ко второму.

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