2017-03-16 113 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)` 
相關問題