當前實現佈局: 動態調整掛鉤的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