1

我创建了一个扩展 JDialog 的组件。它在 JScrollPane 中创建了一个 JPanel(大尺寸)。然后我将 RadioButtons 和 JLabels 添加到 JPanel

两个问题: 1 - RadioButtons 和 JLabels 不显示。2 - JScrollPane 的滚动条不显示

这是我的代码:

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 回答