Ошибка java.awt.AWTEventMulticaster.mouseEntered

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

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

Добрый день! Подскажите плиз начинающему программисту. Начал писать программку и столкнулся с необъяснимым для себя. Очень часто (не всегда) возникают ошибки: java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299) at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299) at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299) at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299) ... Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) ... at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) Причем ссылок на номер строки в моей проге нет Когда я открываю на коды ошибок в консоли IntelliJ IDEA открывается -

public class AWTEventMulticaster implements

и ссылка на метод в этом классе, например public void mouseReleased(MouseEvent e) { * ((MouseListener)a).mouseReleased(e); ((MouseListener)b).mouseReleased(e); } голову уже сломал, что делать и что не так
мой фрейм
Листинг программы
  1. package com.zerg.Shitalochka;
  2. import javax.imageio.ImageIO;
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseListener;
  7. import java.awt.font.FontRenderContext;
  8. import java.awt.geom.Point2D;
  9. import java.awt.geom.Rectangle2D;
  10. import java.awt.geom.RoundRectangle2D;
  11. import java.io.File;
  12. import java.io.IOException;
  13. public class MyFrame extends JFrame {
  14. private Image imageYear;
  15. private Image imageMonth;
  16. private int monthInt = 0; // номер выбранного месяца
  17. private int dayNumberInt = 0; // номер выбранного дня
  18. private int yearInt = 0; // номер выбранного года
  19. private int firstDay = 0; // начальная позиция заполнения дней
  20. private int endDay = 0; // конечная позиция заполнения дней
  21. private Object monthArrayObject; // массив для помещения всех данных одного месяца
  22. private int monthArrayInt [] [];
  23. private int mouseClickedX = 0;
  24. private int mouseClickedY = 0;
  25. private int mousePressedX = 0;
  26. private int mousePressedY = 0;
  27. private int dayWeek = 0;
  28. public boolean closeFrameDayBoolean;
  29.  
  30. final String monthString1 = "Январь";
  31. final String monthString2 = "Февраль";
  32. final String monthString3 = "Март";
  33. final String monthString4 = "Апрель";
  34. final String monthString5 = "Май";
  35. final String monthString6 = "Июнь";
  36. final String monthString7 = "Июль";
  37. final String monthString8 = "Август";
  38. final String monthString9 = "Сентябрь";
  39. final String monthString10 = "Октябрь";
  40. final String monthString11 = "Ноябрь";
  41. final String monthString12 = "Декабрь";
  42. final String [] monthArray = new String[12];
  43. public final String [] dayOfWeekArray = new String[7];
  44. Rectangle2D [] arrayRectangle = new Rectangle2D[13]; // 12 рамок месяцев и 1 рамка выделения
  45. RoundRectangle2D rectButton = null; // кнопка в меню месяца
  46. Rectangle2D [] arrayRectangleDay = new Rectangle2D[43]; // 43 рамки для всех дней
  47. boolean newImageBooleanYear = false; // прорисовка меню года
  48. boolean newImageBooleanMonth = false; // прорисовка меню месяца
  49. boolean newImageBooleanDay = false; // прорисовка меню дня
  50. boolean selectionMonth = false; // прорисовка выделения месяца
  51. boolean selectionRectButton = false; // выбрана кнопка назад или нет
  52. boolean createFrameDay = true; // если фрейм дня еще не создан
  53. private int xRec13 = 0; //координаты выделения в меню год
  54. private int yRec13 = 0;
  55. private int hRec13 = 0;
  56. private int wRec13 = 0;
  57. private int xRecDay = 0; // координаты выделения в меню месяц
  58. private int yRecDay = 0;
  59. private int hRecDay = 0;
  60. private int wRecDay = 0;
  61.  
  62. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  63. int heightScreen = screenSize.height;
  64. int widthScreen = screenSize.width;
  65. int heightFrame = heightScreen*3/4;
  66. int widthFrame = widthScreen*3/4;
  67. private String textUpString = "";
  68. //private String textDownString = "";
  69. private String fonString = "fon.png";
  70. private String menuYearString = "12.jpg";
  71. private String menuMontString = "month.gif";
  72. private JLabel textUp;
  73. private JTextField textDown;

Решение задачи: «Ошибка java.awt.AWTEventMulticaster.mouseEntered»

textual
Листинг программы
  1. arrayRectangleDay [0] = rectMonth11;
  2.                     arrayRectangleDay [1] = rectMonth12;
  3.                     arrayRectangleDay [2] = rectMonth13;
  4.                     arrayRectangleDay [3] = rectMonth14;
  5.                     arrayRectangleDay [4] = rectMonth15;
  6.                     arrayRectangleDay [5] = rectMonth16;
  7.                     arrayRectangleDay [6] = rectMonth17;
  8.  
  9.                     arrayRectangleDay [7] = rectMonth21;
  10.                     arrayRectangleDay [8] = rectMonth22;
  11.                     arrayRectangleDay [9] = rectMonth23;
  12.                     arrayRectangleDay [10] = rectMonth24;
  13.                     arrayRectangleDay [11] = rectMonth25;
  14.                     arrayRectangleDay [12] = rectMonth26;
  15.                     arrayRectangleDay [13] = rectMonth27;
  16.  
  17.                     arrayRectangleDay [14] = rectMonth31;
  18.                     arrayRectangleDay [15] = rectMonth32;
  19.                     arrayRectangleDay [16] = rectMonth33;
  20.                     arrayRectangleDay [17] = rectMonth34;
  21.                     arrayRectangleDay [18] = rectMonth35;
  22.                     arrayRectangleDay [19] = rectMonth36;
  23.                     arrayRectangleDay [20] = rectMonth37;
  24.  
  25.                     arrayRectangleDay [21] = rectMonth41;
  26.                     arrayRectangleDay [22] = rectMonth42;
  27.                     arrayRectangleDay [23] = rectMonth43;
  28.                     arrayRectangleDay [24] = rectMonth44;
  29.                     arrayRectangleDay [25] = rectMonth45;
  30.                     arrayRectangleDay [26] = rectMonth46;
  31.                     arrayRectangleDay [27] = rectMonth47;
  32.  
  33.                     arrayRectangleDay [28] = rectMonth51;
  34.                     arrayRectangleDay [29] = rectMonth52;
  35.                     arrayRectangleDay [30] = rectMonth53;
  36.                     arrayRectangleDay [31] = rectMonth54;
  37.                     arrayRectangleDay [32] = rectMonth55;
  38.                     arrayRectangleDay [33] = rectMonth56;
  39.                     arrayRectangleDay [34] = rectMonth57;
  40.  
  41.                     arrayRectangleDay [35] = rectMonth61;
  42.                     arrayRectangleDay [36] = rectMonth62;
  43.                     arrayRectangleDay [37] = rectMonth63;
  44.                     arrayRectangleDay [38] = rectMonth64;
  45.                     arrayRectangleDay [39] = rectMonth65;
  46.                     arrayRectangleDay [40] = rectMonth66;
  47.                     arrayRectangleDay [41] = rectMonth67;
  48.                     if (selectionMonth) { // выбор дня
  49.                         Rectangle2D rectMonth = new Rectangle2D.Double(xRecDay, yRecDay, wRecDay, hRecDay);
  50.                         graphics2D.setColor(new Color(60, 255, 8));
  51.                         graphics2D.fill(rectMonth);
  52.                     }
  53.  
  54.                     if (selectionRectButton) { // кнопка "назад"
  55.                         graphics.setColor(new Color(59, 255, 6));
  56.                     }
  57.                     else graphics.setColor(Color.WHITE);
  58.                     rectButton = new RoundRectangle2D.Double(x+w*6,y*2/5,w,h,10,10);
  59.                     graphics2D.fill(rectButton);
  60.  
  61.                     dayOfWeekArray [0] = "понедельник";
  62.                     dayOfWeekArray [1] = "вторник";
  63.                     dayOfWeekArray [2] = "среда";
  64.                     dayOfWeekArray [3] = "четверг";
  65.                     dayOfWeekArray [4] = "пятница";
  66.                     dayOfWeekArray [5] = "суббота";
  67.                     dayOfWeekArray [6] = "воскресенье";
  68.  
  69.                     graphics.setColor(new Color(2, 0, 185));
  70.                     font = new Font ("SansSerif",Font.BOLD,(getWidth()/60));
  71.                     graphics.setFont(font);
  72.                     graphics.drawString(dayOfWeekArray[0], x + 3, y + h * 3 / 5);
  73.                     graphics.drawString(dayOfWeekArray[1], x + 3, (y + h * 3 / 5) + h);
  74.                     graphics.drawString(dayOfWeekArray [2],x+3,(y+h*3/5)+h*2);
  75.                     graphics.drawString(dayOfWeekArray[3], x + 3, (y + h * 3 / 5) + h * 3);
  76.                     graphics.drawString(dayOfWeekArray [4],x+3,(y+h*3/5)+h*4);
  77.                     graphics.setColor(new Color(158, 3, 2));
  78.                     graphics.drawString(dayOfWeekArray[5], x + 3, (y + h * 3 / 5) + h * 5);
  79.                     graphics.drawString(dayOfWeekArray [6],x+3,(y + h * 3 / 5) + h * 6);
  80.                     graphics.setColor(new Color(1, 106, 53));
  81.                     font = new Font ("SansSerif",Font.BOLD,(getWidth()/40));
  82.                     graphics.setFont(font);
  83.                     graphics.drawString("назад",(x+w*7)-w*31/40,y*5/7);
  84.  
  85.                     monthArrayObject = Year.getIntMenuMonth(monthInt);  // получение данных
  86.                     monthArrayInt = (int[][]) monthArrayObject; // приведение к int
  87.                     int monthSize = monthArrayInt [0] [0] /10; // колличество дней в месяце
  88.                     dayWeek = monthArrayInt [0] [0] - ((monthSize)*10); // день недели 1-го числа месяца
  89.                     int dayNumber = 1; // счетчик дней для цикла
  90.                     boolean runInt = false; // флажок начала отчета
  91.  
  92.                     // прорисовка дней  и чисел в клеточках
  93.                     for (int iStr  = 1; iStr <= 6; iStr ++){
  94.                         for ( int iWeek = 0; iWeek < 7; iWeek ++){
  95.                             if (dayNumber <= monthSize){
  96.                                 if (iWeek == (dayWeek-1) || runInt){
  97.  
  98.                                     runInt = true;
  99.  
  100.                                     graphics.setFont(new Font ("SansSerif",Font.BOLD,(getWidth()/25)));
  101.                                     if (iWeek > 4) graphics.setColor(new Color(156,10,10));
  102.                                     else graphics.setColor(new Color(1, 106, 53));
  103.                                     graphics.drawString(String.valueOf(dayNumber),(x + w/3)+w*iStr, (y + h * 3 / 5) + h * iWeek);
  104.  
  105.                                     graphics.setColor(Color.BLACK);
  106.                                     graphics.setFont(new Font ("SansSerif",Font.ITALIC,(getWidth()/60)));
  107.                                     graphics.drawString(String.valueOf((monthArrayInt [0] [1])+"/"+(monthArrayInt [0] [2])),(x + w/10)+w*iStr, (y + h * 30 / 32) + h * iWeek);
  108.                                     dayNumber++;
  109.                                 }
  110.                             }
  111.  
  112.                         }
  113.                     }
  114.                     // выбор дня
  115.  
  116.                     Point2D pointMonth1 = new Point2D.Double(mousePressedX,mousePressedY); // создается точка с координатами нажатия ЛКМ
  117.                     Point2D pointMonth2 = new Point2D.Double(mouseClickedX,mouseClickedY); // создается точка с координатами отпускания ЛКМ
  118.  
  119.                     firstDay = dayWeek;
  120.                     endDay = monthSize + dayWeek - 1;
  121.                     for (int i = 0; i < 42; i++) { // создается выделение выбранного месяца
  122.  
  123.                         if (arrayRectangleDay[i].contains(pointMonth1)) {
  124.                             if ((i+1) >= firstDay && (i+1) <= endDay) {
  125.                                 xRecDay = (int) arrayRectangleDay[i].getX();
  126.                                 yRecDay = (int) arrayRectangleDay[i].getY();
  127.                                 hRecDay = (int) arrayRectangleDay[i].getHeight();
  128.                                 wRecDay = (int) arrayRectangleDay[i].getWidth();
  129.                                 selectionMonth = true;
  130.                                 dayNumberInt = i - firstDay + 2; // записывается номер дня
  131.  
  132.                                // repaint();
  133.                             }
  134.                         }
  135.                     }
  136.                     for (int i = 0; i < 42; i++) { //отпускание кнопки на выбранном дне
  137.  
  138.                         if (arrayRectangleDay[i].contains(pointMonth2)) {
  139.                             if ((i+1) >= firstDay && (i+1) <= endDay) {
  140.                                 newImageBooleanDay = true;
  141.                                 createFrameDay = true;
  142.                                 //repaint();
  143.                             }
  144.                         }
  145.                     }
  146.  
  147.                     if (rectButton.contains (pointMonth1)){ // нажатие кнопки "назад"
  148.                         selectionRectButton = true;
  149.  
  150.  
  151.                     }
  152.                     else selectionRectButton = false;
  153.  
  154.  
  155.                     if (rectButton.contains(pointMonth2)) { // отпускание кнопки назад
  156.                         newImageBooleanMonth = false;
  157.                         newImageBooleanYear = true;
  158.  
  159.                         mouseClickedX = 0;
  160.                         mouseClickedY = 0;
  161.                         mousePressedX = 0;
  162.                         mousePressedY = 0;
  163.                         repaint();
  164.  
  165.  
  166.                     }
  167.  
  168.  
  169.                 }
  170.  
  171.             if (newImageBooleanDay){ // если выбран меню день
  172.  
  173.  
  174.                 setDownText("Введите данные!");
  175.                 if (createFrameDay) {
  176.  
  177.                     //System.out.println("день создан ");// убрать
  178.                     //Shitalochka.createFrameDay (yearInt, monthInt, dayNumberInt );
  179.                     createFrameDay = false;
  180.  
  181.                 }
  182.  
  183.             }
  184.             if (closeFrameDayBoolean) { // пересмотреть и удалить лишнее !!!!!!!!!!!!!!!!!!!!! // удаление окна frameDay
  185.                 Shitalochka.frameDay.button1.removeAll();
  186.                 Shitalochka.frameDay.setVisible(false);
  187.                 Shitalochka.frameDay.dispose();
  188.                 newImageBooleanDay = false;
  189.                 newImageBooleanMonth = true;
  190.                 //setEnabled(true);
  191.                 //setFocusable(true);
  192.                 closeFrameDayBoolean = false;
  193.                 Shitalochka.frameDay = null;
  194.                 repaint();
  195.             }
  196.  
  197.         }
  198.  
  199.         public MyPanel (){
  200.             try {
  201.                 File fonFile = new File(fonString);
  202.                 imageFon = ImageIO.read(fonFile);
  203.  
  204.             } catch (IOException e) {
  205.                 e.printStackTrace();
  206.             }
  207.  
  208.             try {
  209.                 File menuImageYear = new File(menuYearString);
  210.                 imageYear = ImageIO.read(menuImageYear);
  211.  
  212.             } catch (IOException e) {
  213.                 e.printStackTrace();
  214.             }
  215.  
  216.             try {
  217.                 File menuImageMonth = new File(menuMontString);
  218.                 imageMonth = ImageIO.read(menuImageMonth);
  219.  
  220.             } catch (IOException e) {
  221.                 e.printStackTrace();
  222.             }
  223.  
  224.         }
  225.  
  226.     }
  227.  
  228.  
  229.  
  230.  
  231.     public MyFrame (String t){
  232.  
  233.         this.textUpString = t;
  234.  
  235.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//потом это убрать
  236.  
  237.         setSize(widthFrame,heightFrame);
  238.         int yFrame = (heightScreen - heightFrame)/2;
  239.         int xFrame = (widthScreen - widthFrame)/2;
  240.         setLocation(xFrame, yFrame);
  241.  
  242.         Image iconFrame = Toolkit.getDefaultToolkit().getImage("logo.png");
  243.         setIconImage(iconFrame);
  244.  
  245.         setTitle("Считалочка");
  246.  
  247.  
  248.  
  249.         textUp = new JLabel ("", new ImageIcon("Z.gif"), SwingConstants.CENTER);
  250.         textUp.setFont(new Font("SansSerif", Font.BOLD, 26));
  251.         textUp.setForeground(Color.blue);
  252.  
  253.         textDown = new JTextField ("",widthFrame);
  254.         textDown.setEditable(false);
  255.         textDown.setFont(new Font("SansSerif", Font.BOLD, 20));
  256.         textDown.setForeground(Color.red);
  257.  
  258.         textUp.setText (textUpString);
  259.         MyPanel panel = new MyPanel();
  260.         Container container = getContentPane();
  261.         BorderLayout layout = new BorderLayout(1,0);
  262.         container.add(panel, layout.CENTER);
  263.         container.add(textUp, layout.NORTH);
  264.         container.add(textDown, layout.SOUTH);
  265.  
  266.         setVisible(true);
  267.  
  268.  
  269.     }
  270.     public  void setUpText (String text){ // изменяет текст в верхней панели
  271.         textUp.setText (text);
  272.         repaint();
  273.     }
  274.     public  void setDownText (String text){ // изменяет текст в нижней панели
  275.         textDown.setText (text);
  276.         repaint();
  277.     }
  278.     public void setImage  (String text){ // загружает картинку меню в фрейм
  279.         if (text.equals("menuYear")){
  280.             newImageBooleanYear = true;
  281.             repaint();
  282.  
  283.         }
  284.  
  285.  
  286.     }
  287.     public String getMonth (int a) { // возвращает название месяца по номеру
  288.         String r = monthArray [a];
  289.         return r;
  290.     }
  291.  
  292.     public String getStringWeek (int a) { // возвращает название дня недели по номеру
  293.         String r = dayOfWeekArray [a];
  294.         return r;
  295.     }
  296.  
  297.     public int [] getData () {
  298.         int [] array = new int[3];
  299.         array [0] = dayNumberInt; // номер выбранного месяца
  300.         array [1] = monthInt; // номер выбранного дня
  301.         array [2] = yearInt; // номер выбранного года
  302.         return array;
  303.     }
  304.   /*  public void closeFrameDay (){
  305.         Shitalochka.frameDay.setVisible(false);
  306.         Shitalochka.frameDay.dispose();
  307.         newImageBooleanDay = false;
  308.         newImageBooleanMonth = true;
  309.         repaint();
  310.     } */
  311.  
  312.     private class MyMouse implements MouseListener {
  313.         @Override
  314.         public void mouseClicked(MouseEvent e) {
  315.  
  316.             if (!e.isAltDown() && !e.isMetaDown()) {
  317.                 mouseClickedX = e.getX();
  318.                 mouseClickedY = e.getY();
  319.                 //System.out.println(mouseClickedX + " " + mouseClickedY);
  320.             }
  321.  
  322.         }
  323.  
  324.         @Override
  325.         public void mousePressed(MouseEvent e) {
  326.             if (!e.isAltDown() && !e.isMetaDown()) {
  327.                 mousePressedX = e.getX();
  328.                 mousePressedY = e.getY();
  329.             }
  330.         }
  331.  
  332.         @Override
  333.         public void mouseReleased(MouseEvent e) {
  334.             mouseClickedX = 0;
  335.             mouseClickedY = 0;
  336.             mousePressedX = 0;
  337.             mousePressedY = 0;
  338.  
  339.         }
  340.  
  341.         @Override
  342.         public void mouseEntered(MouseEvent e) {
  343.             mouseClickedX = 0;
  344.             mouseClickedY = 0;
  345.             mousePressedX = 0;
  346.             mousePressedY = 0;
  347.  
  348.             repaint();
  349.  
  350.  
  351.         }
  352.  
  353.         @Override
  354.         public void mouseExited(MouseEvent e) {
  355.             mouseClickedX = 0;
  356.             mouseClickedY = 0;
  357.             mousePressedX = 0;
  358.             mousePressedY = 0;
  359.  
  360.         }
  361.  
  362.     }
  363.  
  364.  
  365.  
  366. }

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


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

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

11   голосов , оценка 3.545 из 5

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

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

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