如何在达到某个数字之前创建计数器

时间:2017-03-16 03:37:08

标签: java panel

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

到目前为止(仅4);

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

公共课阿尔巴尼亚{

from difflib import get_close_matches
def suggestion(first_name, last_name):
    names = []
    my_request = get_request("https://www.mysportsfeeds.com/api/feed/pull/nfl/2016-2017-regular/active_players.json")

    for n in my_request['activeplayers']['playerentry']:
        if last_name == n['player']['LastName'] and  first_name == n['player']['FirstName']:
            pass

        else:
            names.append(n['player']['FirstName'] + " " + n['player']['LastName'])
            suggest = get_close_matches(first_name + " " + last_name, names)

    return  "did you mean " + "".join(suggest) + "?"



print suggestion("mattthews ", "stafffford") #should return Matthew Stafford

}

3 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分: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);

}

答案 2 :(得分: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)`