Моя программа состоит из двух классов (test и paintClass) в разных файлах. В классе paintClass я рисую квадратную панель размером 5x5, используя метод paintComponent. Я хочу добавить кнопки на каждом маленьком квадрате на большом квадрате. Когда я запускаю код, я не получаю никаких кнопок. Я хочу иметь 25 (5x5) кнопок, используя jpanel на фигуре, нарисованной paintComponent. Это возможно? Если да, то как я могу это сделать?Добавление кнопок нарисованной фигуры paintComponent
EDIT: Проблема была в петле. Номер имел значение по умолчанию 0, поэтому цикл не работал. Я определил число в начале. Он решил проблему. Также один из инвервалов был неправильным. Я изменил J = 0 при у = 1.
import javax.swing.*;
import java.awt.*;
public class test
{
public static void main(String[] args)
{
JFrame frame = new JFrame("buttons");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(250,250);
PaintClass paint = new PaintClass();
paint.repaint();
f1.getContentPane().add(paint);
frame.pack();
frame.setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
public class PaintClass extends JPanel
{
private Graphics g;
private int interval,side,number;
private JButton button;
public PaintClass()
{
number = 5;
button = new JButton();
setLayout(new GridLayout(5,5));
for(int i = 0; i <= number - 1; i++)
{
for(int j = 1; j <= number - 1; j++)
{
button = new JButton();//ADDED
button.setBounds(i * interval, 0, interval, interval);
add(button);
}
button = new JButton();//ADDED
button.setBounds(0, i * interval, interval, interval);
add(button);
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
this.repaint();
side = 250;
number = 5;
interval = side/number;
g.drawRect(0,0, side, side);
for(int i = 0; i <= number - 1; i++)
{
for(int j = 0; j <= number - 1; j++)
{
g.drawLine(i * interval, 0, i * interval, side);
}
g.drawLine(0, i * interval, side, i * interval);
}
}
}
Имена классов должны начинаться с символа верхнего регистра. «paintClass» ошибочен и должен быть «PaintClass». Обновите свой опубликованный код, чтобы форум мог правильно обозначать имена классов, если вы хотите, чтобы люди читали ваши вопросы. – camickr
Думаю, вам нужно предоставить paintClass. Добавить кнопки в вашу раскрашенную сетку может быть трудно достигнуть, учитывая особенности управления компоновкой. – MadProgrammer