2016-12-13 14 views
0
JScrollPane scrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 
scrollPane.setBounds(23, 11, 603, 123); 

contentPane.add(scrollPane); 

JPanel panel = new JPanel(); 
JLabel[] labels=new JLabel[callout.getRedCount()]; //callout.getRedCount() = 8 
panel.setLayout(null); 
int x = 50; 
int y = 50; 
for (int i=0;i<callout.getRedCount();i++){ //callout.getRedCount() = 8 
     labels[i]=new JLabel("Red" + i); 
     labels[i].setBounds(x, y, 32, 32); 
     panel.add(labels[i]); 
     x += 150; 
} 
scrollPane.setViewportView(panel); 

scrollPane에 포함 된 패널에이 라벨을 추가하려고합니다. 마지막 몇 개가 패널 크기를 초과 할 때를 제외하고는 레이블이 올바르게 표시됩니다. scrollPane은 스크롤하지 않습니다. 나는 다양한 다른 레이아웃에 대해 .setLayout을 시도했지만 여전히 결과가 없습니다. 이 일을하는 방법에 뭔가 빠졌습니까?ScrollPane에 포함 된 Panel에 JLabels을 추가하는 자바

+0

스크롤 창에 패널의 적절한 너비가 표시됩니까? I.E. 스크롤 바가 수평으로 움직일 수 있다는 것을 보여 주지만 실 거예요? – KyleKW

+0

나는'.HORIZONTAL_SCROLLBAR_ALWAYS'을 가지고 있기 때문에 양쪽에 화살표를 표시하지만 스크롤 바는 없습니다. 내 레이블이 스크롤 영역에서 반으로 자르고 스크롤되지 않는 부분을 표시하도록 할 수 있습니다. – Torewin

답변

0

그래, GridBagLayout으로 작업 할 수 있습니다. 당신은 값 주위에 변경할 수 있습니다

public static void main(String args[]){ 

    JFrame contentPane = new JFrame(); 

    JScrollPane scrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 
    scrollPane.setBounds(23, 11, 50, 50); 

    contentPane.add(scrollPane); 

    JPanel panel = new JPanel(); 
    JLabel[] labels=new JLabel[8]; //callout.getRedCount() = 8 
    panel.setLayout(new GridBagLayout()); 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.insets = new Insets(0,10,0,0); 
    int x = 50; 
    int y = 50; 
    for (int i=0;i<8;i++){ //callout.getRedCount() = 8 
      labels[i]=new JLabel("Red" + i); 
      gbc.gridx = i; 
      panel.add(labels[i], gbc); 
    } 
    scrollPane.setViewportView(panel); 
    contentPane.setSize(50,50); 
    contentPane.setVisible(true); 

} 

,이 매우 거친 입니다. 희망이 도움이!

+0

Genius! GridBagLayout에 대해 연구하겠습니다. 왜냐하면 scrollPane 내부에 서로 3 개의 패널이 있어야하기 때문입니다. 종류와 같은 컬럼과 테이블. 정말 고마워! – Torewin

+0

괜찮습니다. 여기에 GridBagLayout에 대한 지원이 많이 있습니다. 너무 자주하지 않으면 빠른 Google 검색으로 GridBagLayout 문제에 대한 해결책을 찾을 수 있습니다! – KyleKW