1

JDialog を拡張するコンポーネントを作成しました。JScrollPane 内に JPanel (大きなサイズ) を作成します。次に、RadioButtons と JLabels を JPanel に追加します。

2 つの問題: 1 - RadioButtons と JLabels が表示されません。2 - JScrollPane の scrollBars が表示されない

ここに私のコードがあります:

public class xuggleJOptionPane1 extends JDialog{  

    Container pane;  
    JPanel paneMain;  
    JLabel ms1;  
    xuggleJOptionPane1 myFrame;  
    JPanel panel;  
    JScrollPane paneScroll;  
    JPanel paneScrollpanel;  

    public xuggleJOptionPane1(JFrame parent, String str, int nf)  
    {  
        super(parent, str);  

        myFrame = this;  
        myFrame.setPreferredSize(new Dimension(400, 160));  
        myFrame.setSize(new Dimension(400, 160));  

        panel = new JPanel();  
        panel.setSize(400, 160);  

        ms1 = new JLabel();  

        paneScroll = new JScrollPane();  

        paneScroll.setPreferredSize(new Dimension(380,100));  

        paneScrollpanel = new JPanel();  

        paneScrollpanel.setPreferredSize(new Dimension(1600, 1600));  
        //if i add this line the whole paneScrollpanel disappears  
        //paneScrollpanel.setSize(1600, 1600);  

        String pl ="";  
        if (nf != 1) pl = "es";  
        String s1 = "We found " + nf + " flux"+pl+". Which one do you wanna choose ?";  

        ms1.setText(s1);  

        ArrayList<JRadioButton> Buttons = new ArrayList<JRadioButton>();  
        ArrayList<JLabel> Labels = new ArrayList<JLabel>();  

        ButtonGroup group = new ButtonGroup();  
        for (int i = 0; i < nf; i++)  
        {  
            Buttons.add(new JRadioButton());  
            Labels.add(new JLabel("test"));  
            paneScrollpanel.add(Buttons.get(i));  
            paneScrollpanel.add(Labels.get(i));  
            group.add(Buttons.get(i));  
        }  
        Buttons.get(0).setSelected(true);  

        paneScroll.add(paneScrollpanel);  
        panel.add(ms1);  
        panel.add(paneScroll);  
        myFrame.add(panel);  

        myFrame.setVisible(true);  
        myFrame.setResizable(false);  
    }  


}  
4

1 に答える 1

4

変化する

paneScroll.add(paneScrollpanel); 

paneScroll.setViewportView(paneScrollpanel);  

私がここにいる間...

これはちょっと無意味です(私見)

myFrame = this;  
myFrame.setPreferredSize(new Dimension(400, 160));  
myFrame.setSize(new Dimension(400, 160)); 

あなたが使用することができます

this.setSize(new Dimension(400, 160)); 

また

setSize(new Dimension(400, 160)); 

これはちょっと無意味です

panel.setSize(400, 160); 

レイアウト マネージャーは、パネルのサイズを独自に決定します。

あなたはおそらくまた調べたいと思うでしょうpack

個人的には、サイズ変更できないフレームは本当に嫌いです :P

于 2012-08-16T09:46:42.750 に答える