Объясните почему не запускается программа. - Java

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

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

Объясните пожалуйста почему не запускается программа.
Листинг программы
  1. package gridbag;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5. import java.beans.*;
  6. /**
  7. * Фрейм, в котором сеточно-контейнерная компоновка служит для
  8. * расположения компонентов, предназначенных для выбора шрифтов
  9. * Created by Михаил on 04.07.2016.
  10. */
  11. public class FontFrame extends JFrame{
  12. public static final int TEXT_ROWS = 10;
  13. public static final int TEXT_COLUMS = 20;
  14. private JComboBox<String> face;
  15. private JComboBox<Integer> size;
  16. private JCheckBox bold;
  17. private JCheckBox italic;
  18. private JTextArea sample;
  19. public FontFrame() {
  20. GridBagLayout layout = new GridBagLayout();
  21. setLayout(layout);
  22. ActionListener listener = EventHandler.create(ActionListener.class, this, "updateSample");
  23. //Сконструировать компоненты
  24. JLabel faceLabel = new JLabel("Face: ");
  25. face = new JComboBox<>(new String[]{"Serif", "SansSerif",
  26. "Monospaced", "Dialog", "DialogInput"});
  27. face.addActionListener(listener);
  28. JLabel sizeLabel = new JLabel("Size: ");
  29. size = new JComboBox<>(new Integer[]{8, 10, 12, 15, 18, 24, 36, 48});
  30. size.addActionListener(listener);
  31. bold = new JCheckBox("Bold");
  32. bold.addActionListener(listener);
  33. italic = new JCheckBox("Italic");
  34. italic.addActionListener(listener);
  35. sample = new JTextArea(TEXT_ROWS, TEXT_COLUMS);
  36. sample.setText("Wowowowowow!!!@#E!#!#");
  37. sample.setEditable(false);
  38. sample.setLineWrap(true);
  39. sample.setBorder(BorderFactory.createEtchedBorder());
  40. //Ввести компоненты в сетку, используя служебный класс CBG
  41. add(faceLabel, new GBC(0, 0).setAnchor(GBC.EAST));
  42. add(face, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0).
  43. setInsets(1));
  44. add(sizeLabel, new GBC(0, 1).setAnchor(GBC.EAST));
  45. add(size, new GBC(1, 1).setFill(GBC.HORIZONTAL).setWeight(100, 0).
  46. setInsets(1));
  47. add(bold, new GBC(0, 2, 2, 1).setAnchor(GBC.CENTER).
  48. setWeight(100, 100));
  49. add(italic, new GBC(0, 3, 2, 1).setAnchor(GBC.CENTER).
  50. setWeight(100, 100));
  51. add(sample, new GBC(2, 0, 1, 4).setAnchor(GBC.BOTH).
  52. setWeight(100, 100));
  53. pack();
  54. updateSample();
  55. }
  56. public void updateSample()
  57. {
  58. String fontFace = (String) face.getSelectedItem();
  59. int fontStyle = (bold.isSelected() ? Font.BOLD : 0)
  60. + (italic.isSelected() ? Font.ITALIC : 0);
  61. int fontSize = size.getItemAt(size.getSelectedIndex());
  62. Font font = new Font(fontFace, fontStyle, fontSize);
  63. sample.setFont(font);
  64. sample.repaint();
  65. }
  66. public static void main(String[] args){
  67. EventQueue.invokeLater(new Runnable() {
  68. @Override
  69. public void run() {
  70. JFrame frame = new FontFrame();
  71. frame.setTitle("FontFrame");
  72. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  73. frame.setVisible(true);
  74. }
  75. });
  76. }
  77. }
Листинг программы
  1. package gridbag;
  2. import java.awt.*;
  3. /**
  4. * Этот класс упрощает применение класса GridBagConstraints
  5. * Created by Михаил on 04.07.2016.
  6. */
  7. public class GBC extends GridBagConstraints
  8. {
  9. /**
  10. * Строит объект типа GBC, накладывая ограничения с помощью
  11. * параметров gridx и gridy, а все остальные ограничения
  12. * накладываются на сеточно-контейнерную компоновку по умолчанию
  13. * @param gridx Местоположение в сетке по горизонтали
  14. * @param gridy Местоположение в сетке по вертикали
  15. */
  16. public GBC(int gridx, int gridy)
  17. {
  18. this.gridx = gridx;
  19. this.gridy = gridy;
  20. }
  21. /**
  22. * Строит объект типа GBC, накладывая ограничения с помощью параметров
  23. * gridx, gridy, gridwidth, gridheught, а все остальные ограничения
  24. * накладываются на сеточно-контейнерную компоновку по умолчанию
  25. * @param gridx Местоположение в сетке по горизонтали
  26. * @param gridy Местоположение в сетке по вертикали
  27. * @param gridwidth Шаг сетки по горизонтали
  28. * @param gridheight Шаг сетки по вертикали
  29. */
  30. public GBC(int gridx, int gridy, int gridwidth, int gridheight)
  31. {
  32. this.gridx = gridx;
  33. this.gridy = gridy;
  34. this.gridwidth = gridwidth;
  35. this.gridheight = gridheight;
  36. }
  37. /**
  38. * Устанавливает привязку к сетке
  39. * @param anchor Степень привязки
  40. * @return this Объект для последующего видоизменения
  41. */
  42. public GBC setAnchor(int anchor)
  43. {
  44. this.anchor = anchor;
  45. return this;
  46. }
  47. /**
  48. * Устанавливает направление для заполнения
  49. * @param fill Направление заполнения
  50. * @return this Объект для последующего видоизменения
  51. */
  52. public GBC setFill(int fill)
  53. {
  54. this.fill = fill;
  55. return this;
  56. }
  57. /**
  58. * Устанавливает веса ячеек
  59. * @param weightx Вес ячейки по горизонтали
  60. * @param weighty Вес ячейки по вертикали
  61. * @return this Объект для последующего видоизменения
  62. */
  63. public GBC setWeight(double weightx, double weighty)
  64. {
  65. this.weightx = weightx;
  66. this.weighty = weighty;
  67. return this;
  68. }
  69. /**
  70. * Вводит пробелы вокруг данной ячейки
  71. * @param distance Пробел по всем направлениям
  72. * @return this Объект для последующего видоизменения
  73. */
  74. public GBC setInsets(int distance)
  75. {
  76. this.insets = new Insets(distance, distance, distance, distance);
  77. return this;
  78. }
  79. /**
  80. * Вводит пробелы вокруг данной ячейки
  81. * @param top Пробел сверху
  82. * @param left Пробел слева
  83. * @param right Пробел справа
  84. * @param bottom Пробел снизу
  85. * @return this Объект для последующего видоизменения
  86. */
  87. public GBC setInsets(int top, int left, int right, int bottom)
  88. {
  89. this.insets = new Insets(top, left, right, bottom);
  90. return this;
  91. }
  92. /**
  93. * Устанавливает внутреннее заполнение
  94. * @param ipadx Внутреннее заполнение по горизонтали
  95. * @param ipady Внутреннее заполнение по вертикали
  96. * @return this Объект для последующего видоизменения
  97. */
  98. public GBC setIpad(int ipadx, int ipady)
  99. {
  100. this.ipadx = ipadx;
  101. this.ipady = ipady;
  102. return this;
  103. }
  104. }

Решение задачи: «Объясните почему не запускается программа.»

textual
Листинг программы
  1. Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal anchor value
  2.     at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1763)
  3.     at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1604)
  4.     at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2194)
  5.     at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:2025)
  6.     at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:806)
  7.     at java.awt.Container.layout(Container.java:1503)
  8.     at java.awt.Container.doLayout(Container.java:1492)
  9.     at java.awt.Container.validateTree(Container.java:1688)
  10.     at java.awt.Container.validateTree(Container.java:1697)
  11.     at java.awt.Container.validateTree(Container.java:1697)
  12.     at java.awt.Container.validateTree(Container.java:1697)
  13.     at java.awt.Container.validate(Container.java:1623)
  14.     at java.awt.Container.validateUnconditionally(Container.java:1660)
  15.     at java.awt.Window.pack(Window.java:818)
  16.     at gridbag.FontFrame.<init>(FontFrame.java:69)
  17.     at gridbag.FontFrame$1.run(FontFrame.java:88)
  18.     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
  19.     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
  20.     at java.awt.EventQueue.access$300(EventQueue.java:103)
  21.     at java.awt.EventQueue$3.run(EventQueue.java:706)
  22.     at java.awt.EventQueue$3.run(EventQueue.java:704)
  23.     at java.security.AccessController.doPrivileged(Native Method)
  24.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  25.     at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
  26.     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  27.     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  28.     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  29.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  30.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  31.     at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
  32. Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal anchor value
  33.     at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1763)
  34.     at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1604)
  35.     at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2194)
  36.     at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:2025)
  37.     at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:806)
  38.     at java.awt.Container.layout(Container.java:1503)
  39.     at java.awt.Container.doLayout(Container.java:1492)
  40.     at java.awt.Container.validateTree(Container.java:1688)
  41.     at java.awt.Container.validateTree(Container.java:1697)
  42.     at java.awt.Container.validateTree(Container.java:1697)
  43.     at java.awt.Container.validateTree(Container.java:1697)
  44.     at java.awt.Container.validate(Container.java:1623)
  45.     at java.awt.Window.dispatchEventImpl(Window.java:2717)
  46.     at java.awt.Component.dispatchEvent(Component.java:4698)
  47.     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
  48.     at java.awt.EventQueue.access$300(EventQueue.java:103)
  49.     at java.awt.EventQueue$3.run(EventQueue.java:706)
  50.     at java.awt.EventQueue$3.run(EventQueue.java:704)
  51.     at java.security.AccessController.doPrivileged(Native Method)
  52.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  53.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  54.     at java.awt.EventQueue$4.run(EventQueue.java:720)
  55.     at java.awt.EventQueue$4.run(EventQueue.java:718)
  56.     at java.security.AccessController.doPrivileged(Native Method)
  57.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  58.     at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
  59.     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  60.     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  61.     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  62.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  63.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  64.     at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

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


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

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

7   голосов , оценка 3.286 из 5

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

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

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