Я пытаюсь добавить JTable в свой JPanel, но он там не отображается. Я искал другие вопросы, но предлагаемые решения не помогли мне.Показать JTable в JPanel
Функция, приведенная ниже, является частью класса, который расширяет JFrame. «repaint» - это BufferedImage, «imageLabel» - это JLabel, а «образ» - ImageIcon.
public void showTable() {
try {
repaint = ImageIO.read(new File("filename.jpg"));
} catch (IOException e) { }
Graphics g = repaint.createGraphics();
g.setFont(font);
g.setColor(black);
String[] columnsName = {"id","text"};
Object[][] data = {{new Integer(1),"text one"},{new Integer(2),"text two"}};
JTable table = new JTable(data, columnsName);
JScrollPane tableContainer = new JScrollPane(table);
image = new ImageIcon(repaint.getScaledInstance(sizeX,sizeY, Image.SCALE_SMOOTH));
imageLabel.setIcon(image);
imageLabel.add(tableContainer,BorderLayout.CENTER);
getContentPane().add(imageLabel);
pack();
setVisible(true);
repaint();
revalidate();
}
Что я хочу достичь, это отображать таблицу поверх загруженного изображения.
Заранее спасибо за помощь :)
ли вы установили менеджер компоновки для 'imageLabel'? JLabel по умолчанию имеет нулевой макет. Нам нужно установить его, если мы хотим добавить к нему компоненты –
Почему вы пытаетесь поместить все в 'JLabel'? – khelwood
Вы ошибаетесь в работе - не используете диспетчер компоновки, ожидая, что константа BorderLayout.CENTER будет работать, если контейнер еще не использует BorderLayout, получая ваш объект Graphics через 'getGraphics()' ... время до начните читать учебники, поскольку он каждый раз гадает. –