Dreamer
  
Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон
Репутация: 1 Всего: 15
|
Я написал небольшой пример, потому что объяснить проблему словами почти нельзя: | Код |
package test;
import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent;
import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.WindowConstants; import javax.swing.border.BevelBorder; import javax.swing.table.DefaultTableModel;
public class GBLTablePanel extends JPanel { private final GridBagLayout layout; private final GridBagConstraints gbc;
public GBLTablePanel() { layout = new GridBagLayout(); gbc = new GridBagConstraints(); setLayout(layout);
JTable table = new JTable();
table.setModel(new DefaultTableModel(new Object[][] { { "aaaaaaaaaaaaaaa", 3, "a", null }, { "adasda", 10, "b", null }, { "aaaaaaaaaaaaaaa", 3, "a", null }, { "adasda", 10, "b", null }, { "aaaaaaaaaaaaaaa", 3, "a", null }, { "adasda", 10, "b", null }, { "aaaaaaaaaaaaaaa", 3, "a", null }, { "adasda", 10, "b", null }, { "assssss", 55, "c", null }, { "asdafasfa", 44, "d", null } }, new String[] { "Title 1", "Title 2", "Title 3", "Title 4" }));
JScrollPane scrollPane = new JScrollPane(table);
gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1.0; gbc.weighty = 1.0; layout.setConstraints(scrollPane, gbc);
add(scrollPane);
JButton showPanelBtn = new JButton(new AbstractAction("Show panel") { @Override public void actionPerformed(ActionEvent e) { /* I want this panel to be on top */ JPanel panel = new JPanel(); panel.add(new JLabel("This must be on the top of JTable")); panel.setSize(panel.getSize().width, 30); panel.setPreferredSize(new Dimension(panel.getPreferredSize().width, 30)); panel.setBorder(new BevelBorder(BevelBorder.RAISED)); layout.setConstraints(panel, gbc); gbc.gridy = 0; GBLTablePanel.this.add(panel, 0); GBLTablePanel.this.validate(); } });
gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.gridy = 1; layout.setConstraints(scrollPane, gbc); add(showPanelBtn); }
public static void main(String[] args) { JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
/* Construct table managed by GridBagLayout */ GBLTablePanel panel = new GBLTablePanel(); f.add(panel); f.pack(); f.setVisible(true); } }
|
Когда я нажимаю на кнопку "Show panel", по какой-то причине моя панель растягивается на все окно, а JTable пропадает, если кнопку нажать еще раз появляется вторая панель. Моя задача просто добавить панель так чтобы она появилась над JTable
--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
|