Я пытаюсь создать JScrollPane
, который содержит галерею изображений и JFreeCharts
. Пока я просто использую цветные прямоугольники для тестирования.
У меня есть две проблемы, первая из которых заключается в том, что я не совсем понимаю свой собственный код (он в некоторой степени делает то, что мне нужно, но я Я не уверен, почему).
Мое основное недоразумение заключается в том, и, пожалуйста, посмотрите код ниже, необходимость в панели, которая содержит мои панели с изображениями:
panel.add(panelHolder[m][n]);
Я думаю, что я мог бы просто добавить панели прямо к scrollPanel
вместо
scrollPanel.add(panelHolder[m][n])
Но когда я это сделаю, scrollPanel
будет казаться пустым.
Моя вторая проблема видна на следующем снимке экрана: промежутки между изображениями, и их размеры, кажется, меняются, когда я играю с размером прямоугольника? Я пытался дать panel
a GridLayout
, чтобы избежать наценки, но это ничего не меняет.
//Load Images
Image img = ImageIO.read(new File("H:\\testimg.PNG"));
BufferedImage bimg = toBufferedImage(img);
ImageIcon icon1 = new ImageIcon(bimg);
JLabel iconholder = new JLabel(icon1);
Image img1 = ImageIO.read(new File("H:\\testimg2.PNG"));
BufferedImage bimg1 = toBufferedImage(img1);
ImageIcon icon2 = new ImageIcon(bimg1);
JLabel iconholder1 = new JLabel(icon2);
Image img2 = ImageIO.read(new File("H:\\testimg3.PNG"));
BufferedImage bimg2 = toBufferedImage(img2);
ImageIcon icon3 = new ImageIcon(bimg2);
JLabel iconholder2 = new JLabel(icon3);
//Create Tab
int i=4;
int j=2;
JPanel[][] panelHolder = new JPanel[i][j];
GridLayout glay = new GridLayout(i,j);
glay.setVgap(0);
glay.setHgap(0);
JPanel panel = new JPanel(glay);
JScrollPane scrollPanel = new JScrollPane(panel);
//Put image holding panels in scrollPanel
for(int m = 0; m < i; m++) {
for(int n = 0; n < j; n++) {
panelHolder[m][n] = new JPanel();
panel.add(panelHolder[m][n]);
}
}
scrollPanel.setPreferredSize(new Dimension(410, 50));
scrollPanel.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPanel .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPanel.getVerticalScrollBar().setUnitIncrement(16);
//Put Images in
panelHolder[0][0].add(iconholder);
panelHolder[3][0].add(iconholder1);
panelHolder[1][1].add(iconholder2);