Я хочу практиковать paintComponent метод. Моя программа состоит из двух классов (test и paintClass) в разных файлах. Я хочу разделить область на 25 квадратов, рисуя линии вертикально и горизонтально, используя метод paintComponent. Теперь у моего конструктора есть paintComponent. Я знаю, что это не очень эффективно, но я буду добавлять кнопки, ярлыки и другие вещи в будущем, поэтому мне нужно использовать эту программу, как это. Когда я запускаю программу, я получаю ошибку nullpointerexception. Можете ли вы помочь?Практика paintComponent метод
EDIT: я изменил страницу на g и добавил некоторые строки в код. По-прежнему имеет ту же ошибку.
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);
paintClass paint = new paintClass();//This line has error.
paint.repaint();//ADDED
frame.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;
public paintClass()
{
this.repaint();//ADDED
paintComponent(g);//This line has error.
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);//ADDED and has an error.
this.repaint();//ADDED
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);
}
}
}
'Я хочу практиковать paintComponent method.' - тогда начните с рабочих примеров из учебника Swing в [Custom Painting] (http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html). Учебник покажет вам лучшую структуру для вашей программы. Все, что вам нужно изменить, это код в методе paintComponent(). – camickr