Не рисуется картинка, но должна
я написал программу, которая должна рисовать на кнопке рисунок, основанный на уравнении по типу (XY)^3 = tan(YX). Но после увеличения точности до 0.0000, рисунок перестал появляться. По логам понятно, что метод draw(int,int) выполняется.
Код:
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
class FrameHandler{
//основные переменные для установки информации
private static BufferedImage img;
private static Graphics2D g2d;
//константы
private static final int deep = 500;
private static final int width = 1000;
private static final int zoom = 100;
private static final int accur = 10000;
//окно
static JFrame jFrame = getFrame();
static JButton jButton = new JButton();
//определяем компоненты
private static void init() {
jFrame.add(jButton);
GridBagLayout gridBagLayout = new GridBagLayout();
jButton.setLayout(gridBagLayout);
}
//присваеваем значения
private static void setVars(){
img = new BufferedImage(width,width,BufferedImage.TYPE_INT_RGB);
g2d = (Graphics2D) img.getGraphics();
}
//обрабатываем функцию и устанавливаем картинку
public static void mainMethod(){
setVars();
clear();
check_drawAtAllCells();
init();
imageToPanel();
}
//пробегаемся по полю
private static void check_drawAtAllCells(){
for (int X = 0; X < width / zoom * accur; X++){
for (int Y = 0; Y < width / zoom * accur; Y++){
if (checkTheFunc(X, Y)){
System.out.println(Y / (width / zoom * accur / width) + " " + X / (width / zoom * accur / width));
X / (width / zoom * accur / width));
draw(X / (width / zoom * accur / width), Y / (width / zoom * accur / width));
}
}
}
}
//проверяем условие
private static boolean checkTheFunc(int X, int Y){
double imX = ((double) X - (double) deep) / (double) zoom;
double imY = ((double) Y - (double) deep) / (double) zoom;
return Math.pow((imX * imY),3) == Math.tan(imX * imY);//наше уравнение
}
//рисуем
private static void draw(int X, int Y){
g2d.setColor(Color.BLACK);
g2d.fillRect(X - 1,Y - 1,3,3);
}
//сила в чистоте))
private static void clear(){
g2d.setColor(Color.WHITE);
g2d.fillRect(0,0,width,width);
}
//задаём картинку панели
private static void imageToPanel(){
jButton.setIcon(new ImageIcon(img));
jButton.setSize(width,width);
jFrame.setVisible(true);
}
//определяем окно
static JFrame getFrame(){
JFrame jFrame = new JFrame();
jFrame.setSize(width,width);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
return jFrame;
}
}
В код не попало, что я вызываю метод mainMethod() из Main.main(String args)