Как поднять int в строке в Java? - PullRequest
0 голосов
/ 12 апреля 2020

Я делаю сборник рассказов и, поскольку я не очень креативен с именами, я назвал номера страниц с изображениями примерно так:

ImageIcon pg1icon = new ImageIcon("images/1.png");
ImageIcon pg2icon = new ImageIcon("images/2.png");
ImageIcon pg3icon = new ImageIcon("images/3.png");

JLabel pg1Label = new JLabel(pg1icon);
JLabel pg2Label = new JLabel(pg2icon);
JLabel pg3Label = new JLabel(pg3icon);

Поскольку у меня 30 страниц, этот процесс становится утомительным. Есть ли способ масштабировать номер страницы, похожий на i ++?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

Используя потоки, мы можем кратко обработать это требование как:

List<JLabel> labels = IntStream.rangeClosed(1, 30)
    .mapToObj(i -> new JLabel(new ImageIcon("images/" + i + ".png")))
    .collect(Collectors.toList());
1 голос
/ 12 апреля 2020

Если вам нужно только ImageIcon для JLabel, вы можете использовать один массив для хранения ваших тридцати JLabel (s). Например,

int pageCount = 30;
JLabel[] labels = new JLabel[pageCount];
for (int i = 0; i < pageCount; i++) { // <-- i++ as requested
    ImageIcon icon = new ImageIcon(String.format("images/%d.png", 1+i));
    labels[i] = new JLabel(icon);
}

И затем используйте labels[0] - labels[29] вместо pg1Label - pg30Label.

...