Решил сделать шахматную доску с цифрами и латинскими буквами. Сделал доску, но лэйбл с цифрами не показываются несмотря на то, что я создал его, а также прописал 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.
Добрый день, вам нужно поместить JLabel на JPanel и не нужно ему указывать setVisible(true), это будет выглядеть примерно так в вашем коде:
JLabel count = new JLabel();
count.setText(l);
count.setBounds(x, y, width, height); // задаете координаты по Х, Y, ширину, высоту, либо можно использовать Layout
nf.getContentPane().add(count);
Но я бы сделал немного по другому, создал бы свою панель куда бы выводил разметку шахматной доски ну и соответственно JLabel, хотя большой роли это не сыграет, но все же:
JPanel contentPanel = new JPanel();
nf.setContentPanel(contentPanel);
... // Вывод на нее шахматной доски
JLabel count = new JLabel();
count.setText(l);
count.setBounds(x, y, width, height); // задаете координаты по Х, Y, ширину, высоту, либо можно использовать Layout
contentPanel.add(count);
Надеюсь, что мой ответ оказался вам полезным, удачи в изучении Swing!
JFrame
внутри цикла. То есть каждый раз создаете новую форму и пытаетесь ей задать фон (форме, а не метке). Перенесите код инициализации фрейма за пределы цикла. Потому что форма только одна.nf.getContentPane().setBackground(...);
вам нужно каждый раз создавать новый компонент для клеточки и именно ему задавать цвет.JLabel
никуда не добавляются. Вам нужно сразу после создания куда-либо добавлять вашу метку. Например, на панель, которая в свою очередь должна быть на фрейме. Попробуйте использовать панель, имеющую компоновку GridLayout
.j == 9
в последнем вложенном цикле никогда не выполнится. Потому что он вложен в ветвление с условием j != 9
.Если запустить приложение, то после определенного времени (это время устанавливается в настройках), экран выключается, кроме видео плеераКак...
Как вставить данные этого сайта в таблицу? Вообще не могу понять как их классифицировать на город и странуhttps://raw
Пытался сделать так, что бы VBO отрисовывала первый буффер, пока в другом потоке заполнялся второй буффер, а когда второй заполнился, буфферы...
Пункты меню, вынесенные в ActionBar работают, а те, что можно увидеть лишь при раскрытии меню не реагируют на нажатиеЕсли поменять значения в атрибутах...