Рисование на jframe - Java

Узнай цену своей работы

Формулировка задачи:

Добрый денёк. В один момент надоело решать задачки джавы "а-ля хабрахабр", решился игру наподобие марио написать. Незадача. Не умею рисовать на форме. суть: читаю двумерный массив из файла: 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 В классе Мар:
Листинг программы
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package mapion2;
  7. import java.io.File;
  8. import java.io.IOException;
  9. import java.util.Scanner;
  10. /**
  11. *
  12. * @author например дмитрий
  13. */
  14. public class Map {
  15. int [][] array; //десь храним карту
  16. public Map() {
  17. w = 10;
  18. h = 10;
  19. array = new int[w][h];
  20. }
  21. int w;
  22. int h;
  23. public int getWigth() {
  24. return w;
  25. }
  26. public int getHeigth() {
  27. return h;
  28. }
  29. public int[][] getArray() {
  30. return array;
  31. }
  32. void readMap () throws IOException { //читаем из файла
  33. File file = new File("J:\\Java\\Mapion2\\src\\mapion2\\input.txt");
  34. Scanner scanner = new Scanner(file);
  35. String tmpString;
  36. for (int i = 0; i < 10; i++) {
  37. tmpString = scanner.nextLine();
  38. String [] tmp = tmpString.split(" ");
  39. for (int j = 0; j < 10; j++) {
  40. array [i][j] = Integer.parseInt(tmp[j]);
  41. }
  42. }
  43. return;
  44. }
  45. void printConsoleArray() { //тестовый вывод в консоль
  46. for (int i = 0; i < array.length; i++) {
  47. for (int j = 0; j < array.length; j++) {
  48. System.out.print(array[i][j] + " ");
  49. }
  50. System.out.println();
  51. }
  52. return;
  53. }
  54. }
вывожу в консоль. Ура работает, однако налПоинтерЭкзепшн портит жизнь. Подскажите, где я туплю с графикой?
Листинг программы
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package mapion2;
  7. import java.awt.Color;
  8. import java.awt.Graphics;
  9. import java.awt.image.BufferedImage;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import javax.imageio.ImageIO;
  13. import javax.swing.JFrame;
  14. /**
  15. *
  16. * @author например дмитрий
  17. */
  18. public class Mapion2 {
  19. /**
  20. * @param args the command line arguments
  21. * @throws java.io.IOException
  22. */
  23. public static void main(String[] args) throws IOException {
  24. // java.awt.Image imgEarth;
  25. // imgEarth = new ImageIcon("earth.bmp").getImage();
  26. // java.awt.Image imgHeaven;
  27. // imgHeaven = new ImageIcon("heaven.bmp").getImage();
  28. Map map = new Map();
  29. map.readMap();
  30. map.printConsoleArray();
  31. JFrame jframe;
  32. jframe = new JFrame("null");
  33. JPanel jaJPanel;
  34. jaJPanel = new JPanel();
  35. jframe.setSize(32 * map.getWigth(), 32 * map.getHeigth());
  36. jframe.add(jaJPanel);
  37. BufferedImage imgEarth = null;
  38. try {
  39. imgEarth = ImageIO.read(new File("earth.bmp"));
  40. } catch (IOException e) {
  41. }
  42. Graphics g1 = jaJPanel.getGraphics();
  43. BufferedImage imgHeaven = null;
  44. try {
  45. imgHeaven = ImageIO.read(new File("heaven.bmp"));
  46. } catch (IOException e) {
  47. }
  48. int [][] array;
  49. array = map.getArray();
  50. for (int i = 0; i < map.getWigth(); i++) {
  51. for (int j = 0; j < map.getHeigth(); j++) {
  52. if (array[i][j] == 0) {
  53. g1.drawImage(imgEarth, j, j, Color.yellow, jframe);
  54. }
  55. if (array[i][j] == 1) {
  56. g1.drawImage(imgHeaven, j, j, Color.yellow, jframe);
  57. }
  58. }
  59. }
  60. jframe.setVisible(true);
  61. }
  62. }
форма должна быть заполнена клеточками 32 на 32 пиксела. соответсвуя массиву array p.s. Только учусь))
Листинг программы
  1. int [][] array;
  2. array = map.getArray();
  3. for (int i = 0; i < map.getWigth(); i++) {
  4. for (int j = 0; j < map.getHeigth(); j++) {
  5. if (array[i][j] == 0) {
  6. g1.drawImage(imgEarth, i * 32, j * 32, Color.yellow, jframe);
  7. }
  8. if (array[i][j] == 1) {
  9. g1.drawImage(imgHeaven, i * 32, j * 32, Color.yellow, jframe);
  10. }
  11. }
  12. }
хммм

Решение задачи: «Рисование на jframe»

textual
Листинг программы
  1. public class JaJpanel extends JPanel {
  2.  
  3.     @Override
  4.     protected void paintComponent(Graphics g) {
  5.         Graphics2D g2d = (Graphics2D) g;
  6.         //тут рисуем то что нужно используя в качестве графического контекста g2d
  7.     }
  8. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут