2016-06-21 4 views
0

내가 찾을 수 없습니다 표시되지 않습니다 ScrollPane에 쇼의 내용 그러나 지금스크롤 창은 내용이

public class Bans implements ActionListener { 

@Override 
public void actionPerformed(ActionEvent e) { 
    draw(); 
} 

public static JFrame frame; 

public static void draw() { 
    frame = new JFrame("Ban History"); 
    frame.setPreferredSize(new Dimension(575,250)); 

    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

    JLabel label = new JLabel("Ban History"); 
    label.setFont(Main.header); 
    label.setHorizontalAlignment(SwingConstants.CENTER); 


    JPanel container = new JPanel(); 
    JPanel border = new JPanel(); 
    JScrollPane scrPane = new JScrollPane(border); 
    border.add(container); 

    container.setLayout(new GridLayout(0,1)); 
    scrPane.setBorder(null); 

    for(Ban ban : Main.banlist) { 
     System.out.println(ban.id); 
     JPanel whitespace = new JPanel(); 
     JPanel panel = new JPanel(); 
     panel.setBackground(Color.getHSBColor(176F, 25.46F, 65.12F)); 
     panel.setPreferredSize(new Dimension(510,0)); 
     panel.setLayout(new GridLayout(0,2)); 


     JLabel banDate = new JLabel(); 
     banDate.setText("(#" + ban.id + ") Ban Date: " + ban.banDate.toString() + "  "); 
     banDate.setFont(Main.body); 
     panel.add(banDate); 

     JLabel banName = new JLabel(); 
     banName.setText("Banned By: " + ban.bannedByName); 
     banName.setFont(Main.body); 
     panel.add(banName); 

     JLabel banReason = new JLabel(); 
     banReason.setText("Reason: " + ban.banReason); 
     banReason.setFont(Main.body); 
     panel.add(banReason); 

     JLabel banTime = new JLabel(); 
     banTime.setText("Ban Time: " + ban.banTime); 
     banTime.setFont(Main.body); 
     banTime.setHorizontalAlignment(SwingConstants.RIGHT); 
     panel.add(banTime); 

     container.add(whitespace); 
     whitespace.add(panel); 
    } 


    frame.add(label,BorderLayout.PAGE_START); 
    frame.add(scrPane, BorderLayout.CENTER); 
    frame.pack(); 
    frame.setVisible(true); 
} 

} 

그것은 이전에 일하고, 없음. 나는 Swing에 대해 상당히 새롭다. 그러나 나는 이것이 작동해야한다고 생각할 것이다. 네, 테이블에 내용이 있습니다. run했을 때 MySQL 서버의 올바른 번호에 해당하는 5 개의 ID 번호가 출력되므로 제대로 작동해야합니다.

내용이 추가되고, 그러나 당신의 금지를 나타내는 패널에는 높이가 없기 때문에 당신이 당신의 레이아웃을 디자인 한 방법으로 표시되지 않는
+0

당신이 그것에 어떤 혜택을 찾을 수 있습니다 나는 당신이 당신의 IDE를 변경해야 말하는 게 아니에요,하지만 초보자로서 당신은 많은 실험을하고 있다면 ? 우리는 그 코드 그것은 글꼴과 목록을 포함한 주요 모든 것들을 보유하고 – Frakcool

+0

이없는 ... banlist은 목록 그대로이고, 다른 형식입니다. 이 코드는 매우 유용하지 않으며이 문제에 영향을 미치지 않아야합니다. – Twijn

+2

A [mcve] 우리가 할 수있는 복사 - 붙여 넣기를 게시하고 문제, 우리가 컴파일 해결하려고 한 다음 문제를 재현하려고하지 않는 방법을 참조하십시오. – Frakcool

답변

1

: 코멘트에 @FredK's suggestions을 준수함으로써

panel.setPreferredSize(new Dimension(510,0));

을 레이아웃의 행 사이에 수직 간격을 적용하여 whitespace 패널의 효과를 유지할 수 있습니다. 이것은 GridLayout에서 사용할 수 다른 생성자에 의해 제공됩니다 : GridLayout(int rows, int cols, int hgap, int vgap)

일부 여기에 해당 데모가 있습니다

bans

: 일부 금지를 조롱하여 How to Use GridLayout


, 나는 당신의 코드를 다음 있어요

참고 : 출력 (도 5의 vgap에 사용)을 적용함으로써 제안 상기

과 동일


사이드 노트 : 일찍 일하는 것이 발견되면 변경 한 것일 수 있습니다. IntelliJ를 IDE로 사용할 경우 로컬 기록이라는 유용한 기능이 있습니다. 클래스를 마우스 오른쪽 버튼으로 클릭하면 클래스에 변경 한 내용을 소스 제어와 마찬가지로 타임 스탬프와 함께 라인 단위로 비교할 수 있습니다. 당신은 자세한 내용은 여기를 읽을 수 있습니다 Using Local History

`Main` 무엇