@bublov

Почему не отображается JLable?

Решил сделать шахматную доску с цифрами и латинскими буквами. Сделал доску, но лэйбл с цифрами не показываются несмотря на то, что я создал его, а также прописал setText и setVisible. Укажите на мою ошибку.
package chess123;    
import javax.swing.*;

import java.awt.Color;
public class board{
    public static void main (String [] args) {
        for (int j = 1; j<=9; j++) {
        if (j!=9) {
        for (int i = 1; i<=8; i++) {
            JFrame nf = new JFrame();
            nf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            nf.setBounds(i*100, j*100, 100, 100);
            nf.setUndecorated(true);
            nf.setVisible(true);

            if(i % 2 == 0 & j % 2 != 0) {
                nf.getContentPane().setBackground(Color.BLACK);
            }
            else if(i % 2 != 0 & j % 2 == 0) {
                nf.getContentPane().setBackground(Color.BLACK);
            }
            else if (i % 2 == 0 & j % 2 == 0) {
                nf.getContentPane().setBackground(Color.WHITE);
            }
            else if (i % 2 != 0 & j % 2 != 0) {
                nf.getContentPane().setBackground(Color.WHITE);
            }
            if (j == 9) {
                for (int k = 1; k<=8; k++) {
                String l = String.valueOf(k);
                JLabel count = new JLabel();
                count.setText(l);
                count.setVisible(true);
                }       
            }
        }

    }
}
}
}

P.S Я знаю что цифры должны быть сбоку, но хочется сначала понять структуру JLabel.
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 2
Осталось добавить лейбл на фрейм
Ответ написан
@zelan
Кратко обо мне не получится.
Во-первых: setVisible(true) для фрейма должно вызываться в самом конце, когда все компоненты уже добавлены. Иначе компоненты попросту могут быть не отрисованы.

Во-вторых: JFrame компонент - главное окно приложения, лучше чтобы он был один.
В-третьих: ели ты хочешь добавлять компоненты с указанием их координаты и размера (установив setBounds), то необходимо в родительском компоненте установить абсолютный лейоут (менеджер компоновки). Для этого можно просто передать в конструктор контейнера null (JFrame nf = new JFrame(null); JPanel nf = new JPanel (null); и др.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы