当前实现布局: 动态调整挂钩的JLabel图像在GridLayout布局管理
((编辑:添加 代码:))
private JPanel panelCenter;
private List<BufferedImage> listCreatedImages;
public ChooseCircuitPanel(List<BufferedImage> listCreatedImages) {
this.listCreatedImages = listCreatedImages;
initiate();
}
private void initiate() {
setLayout(new BorderLayout(50, 50));
panelCenter = new JPanel();
LayoutManager theLayout = new GridLayout(0, 3, 0, 0);
panelCenter.setLayout(theLayout);
panelCenter.setBorder(BorderFactory.createLineBorder(Color.BLACK));
for (BufferedImage bufferedImage : listCreatedImages) {
ImageIcon theImage = new ImageIcon(bufferedImage);
JLabel lblForImage = new JLabel(theImage);
lblForImage.setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelCenter.add(lblForImage);
}
this.add(panelCenter, BorderLayout.CENTER);
}
现状:
我们想在这里展示一个赛道。应该通过将标准瓷砖彼此相邻来显示电路。应该可以调整窗口的大小,并且电路板也应该调整大小。
((编辑:位更多的信息:该赛道的数据被存储在服务器上和桌面应用程序的数据可视化的东西翻译,通过将一些标准砖以正确的顺序)。)
((编辑:我们是不允许使用任何外部库应该只使用Java Swing代码)是可行的。)
我想过把图像在JLabel,并把这些JLabel以GridLayout作为布局管理器。使用GridLayout - 我认为 - 应该很容易找到解决方案: GridLayout(= JLabels)中的组件已经可以扩展并按照我的需要进行操作。 现在,它只是一个找到调整图像大小的方法,以便填充JLabels。
正如您所看到的:现在,图像具有固定的大小,并且根本不会缩放。
我浏览了一下,看到很多这归结为使用的Graphics2D和super.paintComponent方法解决方案等
但大多数这些解决方案无关了网格布局的。 所以确凿问题: 是否有更简单的解决方案除了使用的Graphics2D,等知道我使用网格布局?
如果没有,我当然会使用Graphics2D的,等等,但现在我只是在探索我的选择。 :)
((编辑:解决瓷砖现在完全适合对方不介意错位,这是我们的错)。)
你看过['JMCAD'](http://sourceforge.net/projects/jmcad)吗? – trashgod
我觉得你对这个问题有点误解(我的错,加上这个也会开始发帖): 这不是一个比赛电路设计工具或任何东西。 赛道电路数据存储在服务器上,桌面应用程序必须将数据转换为可视化的东西,方法是按照正确的顺序放置一些标准切片。 :) 我会删除设计概念:实际上并非真的必要。 – Asgaro
'我们不允许使用任何外部库。' - 什么是GridView?这不是一个标准的课程。 – camickr