2013-06-30 42 views
0

我在JScrollPane中有一個JPanel。 面板和ScrollPane創建後,我用JButton填充面板。 但我沒有得到ScrollPane的工作。它只是不會滾動我的面板。啓動JScrollPane後設置元素 - JScrollPane不會滾動

也許這是非常簡單的事情,但我在GUI編程方面沒有這方面的經驗。我已經搜索並嘗試了一些我在那裏發現的東西......但是我沒有讓我的GUI工作。

import java.awt.Color; 
import java.awt.Container; 
import java.awt.Dimension; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

import java.awt.CardLayout; 
import java.util.ArrayList; 

import javax.swing.JLabel; 

public class GUI extends JFrame { 
    private Container pinnwand; 

    private JPanel Team = new JPanel(); 
    private JPanel MonsterListe = new JPanel(); 

    private JScrollPane cntAvailableMonster = new JScrollPane(); 
    private ArrayList<JLabel> AvailableMonstersLabels = new ArrayList<JLabel>(); 


    public GUI() { 
     this.pinnwand = getContentPane(); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setBounds(100, 100, 530, 443); 
     this.pinnwand.setLayout(new CardLayout(0,0)); 


     this.Team.setBackground(new Color(44,44,44)); 
     this.Team.setLayout(null); 


     this.MonsterListe.setMinimumSize(new Dimension(200,400)); 
     this.cntAvailableMonster.setBounds(300, 0, 200, 400); 
     this.cntAvailableMonster.setPreferredSize(new Dimension(200,1000)); 
     this.cntAvailableMonster.createVerticalScrollBar(); 
     this.cntAvailableMonster.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
     this.cntAvailableMonster.setViewportView(this.MonsterListe);  
     this.MonsterListe.setLayout(null); 


     this.Team.add(this.cntAvailableMonster); 


     this.pinnwand.add(this.Team,"Team"); 

     this.setAvailableMonsters(); 
    } 

    private void setAvailableMonsters() { 
     for(int i = 0,amount = 20;i < amount;i++) { 
      this.AvailableMonstersLabels.add(new JLabel("monster"+i)); 
      this.AvailableMonstersLabels.get(i).setBounds(0, i*30, 300, 30); 
      this.AvailableMonstersLabels.get(i).setBackground(new Color(255,0,0)); 
      this.AvailableMonstersLabels.get(i).setOpaque(true); 
      this.MonsterListe.add(this.AvailableMonstersLabels.get(i)); 
      this.MonsterListe.setBackground(new Color(0,0,0)); 
     } 
    } 

    public static void main(String[] args) { 
     new GUI().setVisible(true); 
    } 
} 

感謝提前:)

+0

btw它不建議使用空佈局,你解決了你的問題? – nachokk

+0

Java GUI可能需要在不同的屏幕分辨率和使用不同的PLAF的平臺上工作。因此,它們不利於組件的準確放置。要爲可靠的GUI組織組件,請使用佈局管理器或它們的組合,以及用於空白區域的佈局填充和邊框。 –

回答

-1

啊OK,我發現這個問題。 我必須將PreferredSize()設置爲MonsterListe而不是cntAvailableMonster。

+1

另請參見[*我應該避免使用set(Preferred | Maximum | Minimum)Size方法*](http://stackoverflow.com/q/7229226/230513)? – trashgod