【发布时间】:2014-10-15 13:01:21
【问题描述】:
我一直在尝试将 JTable 添加到我的 JPanel,但它没有出现在那里。我搜索了其他问题,但那里提出的解决方案对我没有帮助。
下面的函数是扩展 JFrame 的类的一部分。 “repaint”是 BufferedImage,“imageLabel”是 JLabel,“image”是 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中? -
你做错了很多事情——没有使用布局管理器,如果容器还没有使用 BorderLayout,则期望
BorderLayout.CENTER常量工作,通过getGraphics()获取你的 Graphics 对象。 . 是时候开始阅读教程了,因为它每次都比猜测要好。
标签: java swing jtable jpanel jlabel