2017-03-16 1 views
-1

특정 번호에 도달하는 프로그램을 만들려면 어떻게해야합니까? JPanels를 사용하여 플래그를 만들고 있지만 350000에 도달 할 때까지 계속 진행해야합니다. 이는 각 행에서 각 번호를 적절하게 변경해야한다는 것을 의미합니다. 저는 JPanel과 setbackground 라인의 숫자를 350000까지 제공하는 프로그램을 만들고 싶습니다. 또한 창에서.특정 숫자에 도달 할 때까지 카운터를 만들 수있는 방법

지금까지 (단 4 개);

import javax.swing. ; 가져 오기 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); 

루프 패널을 추가하고, JPanels 대신 JLabel을 사용해야합니다. 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

나는 그의 코드의 구조를 따르고있었습니다, 당신은 정확합니다. 나는 그것에 대한 당신의 대답을 upvoted. – 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)` 
관련 문제