2013-12-24 54 views
0

我想为每个jpanel添加10个jlabel和10个jbutton。现在有10个jpanels,我想添加到一个框架,所以jframe应该显示100 jlabel,100 jbutton 10个jpanels。 我的问题是,框架只显示10 jlabel和10 jbutton。我不知道我错在哪里。 这里是我的代码将jbutton和jlabel的数组添加到jpanel数组到框架中的问题

public class MultiPanel extends JFrame { 

private JPanel[] panel; 
private JLabel[] label; 
private JButton[] button; 

public MultiPanel() { 
    panel = new JPanel[10]; 
    label = new JLabel[10]; 
    button = new JButton[10]; 

    for (int i = 0; i < label.length; i++) { 
     label[i] = new JLabel(String.valueOf(i + 1)); 
     button[i] = new JButton("B"); 
     label[i].setSize(50, 50); 
     panel[i] = new JPanel(); 
     panel[i].setLayout(new FlowLayout(FlowLayout.CENTER)); 
     panel[i].add(label[i]); 
     panel[i].add(button[i]); 
     add(panel[i]); 
    } 
    setLayout(new GridLayout(1, 10)); 
    setSize(720, 560); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
    MultiPanel m_pnl = new MultiPanel(); 
} 
} 
+2

你的逻辑是坏的..你正在添加10 jpanel,并在每个面板1标签和一个按钮... – nachokk

+0

@nachokk:你的意见是正确的,我的回答是错误。你应该做出答案。 –

+1

原始海报 - 你可能会更好地使用JTable来代替。 –

回答

1
public class MultiPanel extends JFrame { 

public MultiPanel() { 
int increment = 0; 
while(increment < 10){ 
    JPanel toAdd = new JPanel(); 
    for (int i = 0; i < 10; i++) { 
     JLabel l = new JLabel(String.valueOf(i + 1)); 
     JButton b = new JButton("B"); 
     l.setSize(50, 50); 
     toAdd.setLayout(new FlowLayout(FlowLayout.CENTER)); 
     toAdd.add(l); 
     toAdd.add(b); 
    } 
    add(toAdd); 
    increment++; 
} 
setLayout(new GridLayout(1, 10)); 
setSize(720, 560); 
setVisible(true); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
    MultiPanel m_pnl = new MultiPanel(); 
} 
} 

你的逻辑是错误的......试试这个。你有一个外部的while循环,将创建10 JPanels像你想要的。内部for循环将012 和JButtons添加到每个JPanel,如你所愿。然后,您只需将全部十个JPanels添加到JFrame中的主要JPanel。我编译并运行了这个程序,它可以正常工作

在你只给每个面板添加一个标签和按钮之前。你有10个面板每个有1个按钮和一个标签

+0

嗨乔希,我试过你的代码,但它给了我一个数组索引超出界限异常 – MastaOpec

+0

我刚刚编译它,它运行良好......你确定一切是完全一样我有它 –

+0

是@josh,我刚刚复制并粘贴 – MastaOpec