내 코드에서 동적으로 채우는 scrollPane이 있습니다. 문제는 내가 범위에서 성장할 수 없다는 것입니다.scrollPane에서 스크롤바를 가져올 수 없습니다.
나는 온라인에서 찾을 수있는 많은 팁을 시도했지만 아무 것도 나타나지 않습니다.
10 개의 구성 요소가 반복되지만 크기는 항상 동일합니다.
B = new JScrollPane();
B.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
B.setViewportBorder(null);
B.setBounds(12, 53, 330, 400);
//making the scrollPane
loadArtists(country);
// loading the method with the content
contentPane.add(B);
// the content method
public void loadArtists(String country){
ArrayList<Artist> top10A = Methods.getTopArtist(country); // top atrister
B.removeAll();
String [] genre =Methods.getGenreArtist(country);
Component2[] comp = new Component2[10]; // skriv ut infohållare
for (int i = 0; i < top10A.size(); i++) {
comp[i] = new Component2(this);
comp[i].setBounds(0, 0, 327, 68);
comp[i].setLocation(0, 0 + space2);
ImageIcon[] panel= new ImageIcon[10];
int lyssnare = top10A.get(0).getListeners();
try {
URL url2 = new URL((top10A.get(i).getImageURL(ImageSize.valueOf("MEDIUM"))));
panel[i]= new ImageIcon(url2);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
panel[i]= new ImageIcon(GUI.class.getResource("/bilder/super.jpg"));
e.printStackTrace();
}
comp[i].setInfo(panel[i],top10A.get(i).getListeners(), top10A.get(i).getName().toString(), String.valueOf(i+1),genre[i],lyssnare,"");
B.add(comp[i]);
space2 = space2 + 75;
//B.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
B.repaint();
}
}
좋아, 그럼 내가 그랬어. 나는 두루마리를 얻을 것이다. 그러나 그것은 단지 나를 1mm 두루마리하게하게했다. 그리고 setBounds를 제거하면 전체 스크롤 패널이 사라집니다. 나는 그 문제를 해결하는 방법을 모른다. 죄송합니다. 약간 부끄러 웠지만 이것이 내 첫 "실제 프로그램"입니다.
scroll1 = new JScrollPane();
scroll1.setViewportBorder(null);
scroll1.setBounds(12, 53, 330, 400);
setComponents = new JPanel();
contentPane.add(scroll1);
scroll1.setViewportView(setComponents);
GroupLayout gl_testP = new GroupLayout(setComponents);
gl_testP.setHorizontalGroup(
gl_testP.createParallelGroup(Alignment.LEADING)
.addGap(0, 307, Short.MAX_VALUE)
);
gl_testP.setVerticalGroup(
gl_testP.createParallelGroup(Alignment.LEADING)
.addGap(0, 398, Short.MAX_VALUE)
);
setComponents.setLayout(gl_testP);
loadArtists(country);
public void loadArtists(String country){
ArrayList<Artist> top10A = Methods.getTopArtist(country); // top atrister
setComponents.removeAll();
String [] genre =Methods.getGenreArtist(country);
Component2[] comp = new Component2[10]; // skriv ut infohållare
for (int i = 0; i < top10A.size(); i++) {
comp[i] = new Component2(this);
comp[i].setBounds(0, 0, 327, 68);
comp[i].setLocation(0, 0 + space2);
ImageIcon[] panel= new ImageIcon[10];
int lyssnare = top10A.get(0).getListeners();
try {
URL url2 = new URL((top10A.get(i).getImageURL(ImageSize.valueOf("MEDIUM")))); // skapa array av artist bilder
panel[i]= new ImageIcon(url2);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
panel[i]= new ImageIcon(GUI.class.getResource("/bilder/super.jpg"));
e.printStackTrace();
System.out.println(panel[i]+" "+"saknar bild");
}
comp[i].setInfo(panel[i],top10A.get(i).getListeners(), top10A.get(i).getName().toString(), String.valueOf(i+1),genre[i],lyssnare,"");
setComponents.add(comp[i]);
space2 = space2 + 75;
scroll1.setViewportView(setComponents);
//B.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setComponents.repaint();
}
}
확인. 그래서 나는 그것을 "고쳤다".
setComponents.setPreferredSize(new Dimension(1,750));
콘텐츠가 동적으로 커지기 때문에 최적이 아닙니다. 하지만 이제는 10 개 이상의 구성 요소를 반복 할 필요가 없을 때 실제로는 별다른 문제가되지 않습니다.
나는 setbound없이 scrollpane을 시작하는 방법을 모른다. 그것을 제거하면 사라집니다. setbounds를 가진 wierd 것은 400에 높이가 있고 놀이가 아무도없는 경우에 저것이다. 하지만 내가 400 이하로 내려갈 수 있다면 400까지 내려갈 수있을 것입니다. 어딘가에이 사소한 일을 해결하려고 노력하는 길을 가졌습니다. –
'그것을 제거하면 제거됩니다. ' null 레이아웃을 사용하지 마십시오!레이아웃 관리자는 모든 구성 요소의 크기를 설정합니다. – camickr