2017-03-16 112 views
-1

如何创建达到特定数量的程序?我使用JPanel创建了一个标志,但我需要继续前进,直到达到350000.这意味着必须在每行中相应地更改每个数字。我想创建一个程序,它使JPanel和setbackground行中的数字达到350000.也在窗格中。如何创建计数器直至达到特定数字

到目前为止(只有4);

import javax.swing。 ; import java.awt。;

公共类阿尔巴尼亚{

public static void main(String[] args) { 
    JFrame albania = new JFrame(); 
    albania.setTitle("Albania"); 
    albania.setSize(300, 200); 
    albania.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel panel1 = new JPanel(); 
    panel1.setBackground(Color.red); 
    JPanel panel2 = new JPanel(); 
    panel2.setBackground(Color.red); 
    JPanel panel3 = new JPanel(); 
    panel3.setBackground(Color.red); 
    JPanel panel4 = new JPanel(); 
    panel4.setBackground(Color.red); 
    Container pane = albania.getContentPane(); 
    pane.setLayout(new GridLayout(2, 2));; 
    pane.add(panel1); 
    pane.add(panel2); 
    pane.add(panel3); 
    pane.add(panel4); 
    albania.setVisible(true); 

} 

}

+0

使用循环?但是,您可能会用这么多面板耗尽内存。 –

+0

只用一个循环.... – NewBie1234

+0

<唱“350000 JPanels挂在墙上”> – slipperyseal

回答

1

你问什么,答案是在一个循环中添加面板

 JFrame albania = new JFrame(); 
     albania.setTitle("Albania"); 
     albania.setSize(300, 200); 
     albania.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Container pane = albania.getContentPane(); 
     pane.setLayout(new GridLayout(2, 2));; 

for(int i =0; i < 350000; i++){ 
    JPanel panel1 = new JPanel(); 
     panel1.setBackground(Color.red); 
     JPanel panel2 = new JPanel(); 
    pane.add(panel1); 
    } 
     albania.setVisible(true); 

,如果你唯一的目标是创建一个彩色格子,您应该使用JLabels而不是JPanels ... JPanel是一个更复杂的对象,并且带有如此多的并发实例会导致您的应用程序性能不佳

0

这将创建一个包含350,000个JPanel对象的ArrayList,并将它们添加到您的JFrame中。正如上面提到的评论者所说,如果有足够的内存来完成操作,这可能会导致非常差的性能。

public static void main(String[] args) { 
    JFrame albania = new JFrame(); 
    ArrayList<JPanel> panels = new ArrayList<>(); 
    albania.setTitle("Albania"); 
    albania.setSize(300, 200); 
    albania.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel newPanel; 
    for (int x = 0; x<350000; x++) { 
     newPanel = new JPanel(); 
     newPanel.setBackGround(Color.red); 
     panels.add(new JPanel()); 
    } 

    Container pane = albania.getContentPane(); 
    pane.setLayout(new GridLayout(2, 2)); 

    for (int x = 0; x<350000; x++) { 
     pane.add(panels.get(x)); 
    } 
    albania.setVisible(true); 

} 
+0

为什么2个循环?你可以只使用一个 –

+0

我遵循他的代码结构,你是对的。我为你提供了答案。 – user681574

0

像其他人所说的那样,需要一个for循环。但是,您可能需要再次访问其中一个350,000个JPanel。虽然这会占用大量内存,但要创建一个数组。

’JFrame albania = new JFrame(); 
    albania.setTitle("Albania"); 
    albania.setSize(300, 200); 
albania.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container pane = albania.getContentPane(); 
    pane.setLayout(new GridLayout(2, 2)); 
JPanel[] panels = new JPanel()[350000]; 
for(int i =0; i < 350000; i++){ 
panels[i] = new JPanel(); 
    panels[i]setBackground(Color.red); 
pane.add(panels[i]); 
} 
    albania.setVisible(true)` 
相关问题