JAVA - GridLayout 和 JScrollPane 表现异常
JAVA - GridLayout and JScrollPane behave unexpected
我在 Java 中的 GridLayout 表现与我预期的不同。
我想在一个 JScrollPane 中有多个框(如下面的屏幕截图所示)。
但是当我必须减少条目时(例如 2),框的高度是 100% 高度。
有人能告诉我我的代码有什么问题吗?
ResultSet result = MysqlDataReader.ReadFromDataBase("DUMMY",connectionStrato);
innerPanel.removeAll();
innerPanel.setLayout(new GridLayout(Integer.parseInt(Math.round(result.getRow() / 3) + ""), 6, 2, 2));
while(result.next()){
URL url;
Image image;
try{
url = new URL("DUMMY" + result.getString(1) + ".jpg");
image = ImageIO.read(url.openStream());
} catch (MalformatedURLException ex) {
url = new URL("DUMMY");
image = ImageIO.read(url.openStream());
Logger.getLogger(ItemforList.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex){
url = new URL("DUMMY);
image = ImageIO.read(url.openStream());
Logger.getLogger(ItemforList.class.getName()).log(Level.SEVERE, null, ex);
}
ItemforList item = new ItemforList("DUMMY"+result.getString(1)+".jpg", result.getString(1)+"");
innerPanel.add(item)
}
scrollPaneL.setViewportView(innerPanel);
Component[] components = innerPanel.getComponents();
for (Component component : components){
if(component.getClass().equals(ItemforList.class)){
ItemforList item = (ItemforList) component;
System.out.printLn("TEST");
item.SetResizedIcon();
}
}
您没有 post 任何代码,所以我无法评论或直接修复它。
但要回答你的问题,解决问题的方法是用虚拟组件填充额外的网格框 - 只是为了占用 space
我在 Java 中的 GridLayout 表现与我预期的不同。
我想在一个 JScrollPane 中有多个框(如下面的屏幕截图所示)。
但是当我必须减少条目时(例如 2),框的高度是 100% 高度。
有人能告诉我我的代码有什么问题吗?
ResultSet result = MysqlDataReader.ReadFromDataBase("DUMMY",connectionStrato);
innerPanel.removeAll();
innerPanel.setLayout(new GridLayout(Integer.parseInt(Math.round(result.getRow() / 3) + ""), 6, 2, 2));
while(result.next()){
URL url;
Image image;
try{
url = new URL("DUMMY" + result.getString(1) + ".jpg");
image = ImageIO.read(url.openStream());
} catch (MalformatedURLException ex) {
url = new URL("DUMMY");
image = ImageIO.read(url.openStream());
Logger.getLogger(ItemforList.class.getName()).log(Level.SEVERE, null, ex);
} catch(IOException ex){
url = new URL("DUMMY);
image = ImageIO.read(url.openStream());
Logger.getLogger(ItemforList.class.getName()).log(Level.SEVERE, null, ex);
}
ItemforList item = new ItemforList("DUMMY"+result.getString(1)+".jpg", result.getString(1)+"");
innerPanel.add(item)
}
scrollPaneL.setViewportView(innerPanel);
Component[] components = innerPanel.getComponents();
for (Component component : components){
if(component.getClass().equals(ItemforList.class)){
ItemforList item = (ItemforList) component;
System.out.printLn("TEST");
item.SetResizedIcon();
}
}
您没有 post 任何代码,所以我无法评论或直接修复它。
但要回答你的问题,解决问题的方法是用虚拟组件填充额外的网格框 - 只是为了占用 space