【问题标题】:JPanel of JPanels in JavaJava中的JPanel的JPanel
【发布时间】:2015-01-02 20:33:22
【问题描述】:

我正在尝试用 Java 开发 Jpanel 的 Jpanel 外部 JPanel 具有 Layout FlowLayout.LEFT,内部 JPanel 具有 Layout FlowLayout.LEADING 我在内部 jpanels 添加了一个标签 应该作为标签的列和行添加到外部面板 但这不起作用将添加到外部面板的标签作为一行我的意思是为所有离开 FowLayout

我将标签存储在名为 board 的标签链表的链表中 这是填充标签链表的代码

for(int i =0 ; i <7 ;i++)
    {
        LinkedList<JLabel> list =new LinkedList<JLabel>();


        for(int j=0 ; j< 5; j++)
        {
            JLabel lab = new JLabel();
            lab.setIcon(add_icon);
            lab.addMouseListener(listener);
            lab.setTransferHandler(new TransferHandler("icon"));    
            list.add(lab);
        }
        board.add(list);

    }

然后我将标签添加到称为容器的外部 jpanel

这里是代码

container.setLayout(new FlowLayout(FlowLayout.LEFT));

    for(int i =0 ; i < board.size() ;i++)
    {
        panel =new JPanel();
        panel.setLayout(new FlowLayout(FlowLayout.LEADING));
        for(int j=0 ; j< board.get(i).size();  j++)
        {
            panel.add(board.get(i).get(j));

        }

        container.add(panel);


        //          
    }
    add(container);

    validate();
    repaint();

这里的输出似乎是流布局引导不起作用

我该怎么做?我应该怎么做才能将标签添加为行和列?

【问题讨论】:

  • 那么你的问题是什么? “我在内部 jpanels 中添加了一个标签应该作为标签的列和行添加到外部面板但是这不起作用将添加到外部面板的标签作为一行我的意思是为所有人留下 FowLayout ”是什么意思?有人可以帮我解码吗?
  • 您的问题非常令人困惑。我猜英语不是你的主要语言,也许你使用了谷歌翻译等翻译网站来帮助你提出问题。请尝试更好地澄清您的问题,以便我们更好地理解它。
  • 您是否考虑过改用GridLayoutGridBagLayout

标签: java swing jpanel


【解决方案1】:

FlowLayout 不能垂直堆叠组件。请改用BoxLayout。试试下面的代码:

container.setLayout(new FlowLayout(FlowLayout.LEFT));
for(int i = 0; i < board.size(); i++){
    panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    for(int j = 0; j < board.get(i).size(); j++)
        panel.add(board.get(i).get(j));
    container.add(panel);
}
add(container);
validate();
repaint();

【讨论】:

  • 非常感谢它真正有用的答案
【解决方案2】:

我发现它可以通过使用 GridBagLayout 来完成

    container.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.fill=GridBagConstraints.HORIZONTAL;
    for(int i =0 ; i < board.size() ;i++)
    {
        panel =new JPanel();
        panel.setLayout(new GridBagLayout());
        GridBagConstraints c1 = new GridBagConstraints();
        c1.fill=GridBagConstraints.VERTICAL;
        c1.weighty=-.9;

        //          panel.setBounds(0, 0, 400, 300);
        for(int j=0 ; j< board.get(i).size();  j++)
        {               
            c1.gridx = j;
            c1.gridy = 0;
            c1.insets= new Insets(-5,0,0,-5);
            panel.add(board.get(i).get(j),c1);

        }   
        c.weightx =- 5;
        c.gridx = 0;
        c.gridy =i ;
        c.insets=new Insets(-5,0,-5,0);


        container.add(panel,c);


        //          
    }
    add(container);

    validate();
    repaint();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多