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

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

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

Объясните пожалуйста почему не запускается программа.
package gridbag;
 
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.beans.*;
 
/**
 * Фрейм, в котором сеточно-контейнерная компоновка служит для
 * расположения компонентов, предназначенных для выбора шрифтов
 * Created by Михаил on 04.07.2016.
 */
 
public class FontFrame extends JFrame{
    public static final int TEXT_ROWS = 10;
    public static final int TEXT_COLUMS = 20;
 
    private JComboBox<String> face;
    private JComboBox<Integer> size;
    private JCheckBox bold;
    private JCheckBox italic;
    private JTextArea sample;
 
    public FontFrame() {
        GridBagLayout layout = new GridBagLayout();
        setLayout(layout);
 
        ActionListener listener = EventHandler.create(ActionListener.class, this, "updateSample");
 
        //Сконструировать компоненты
 
        JLabel faceLabel = new JLabel("Face: ");
        face = new JComboBox<>(new String[]{"Serif", "SansSerif",
                "Monospaced", "Dialog", "DialogInput"});
 
        face.addActionListener(listener);
 
        JLabel sizeLabel = new JLabel("Size: ");
        size = new JComboBox<>(new Integer[]{8, 10, 12, 15, 18, 24, 36, 48});
 
        size.addActionListener(listener);
 
        bold = new JCheckBox("Bold");
        bold.addActionListener(listener);
 
        italic = new JCheckBox("Italic");
        italic.addActionListener(listener);
 
        sample = new JTextArea(TEXT_ROWS, TEXT_COLUMS);
        sample.setText("Wowowowowow!!!@#E!#!#");
        sample.setEditable(false);
        sample.setLineWrap(true);
        sample.setBorder(BorderFactory.createEtchedBorder());
 
        //Ввести компоненты в сетку, используя служебный класс CBG
 
        add(faceLabel, new GBC(0, 0).setAnchor(GBC.EAST));
        add(face, new GBC(1, 0).setFill(GBC.HORIZONTAL).setWeight(100, 0).
                setInsets(1));
        add(sizeLabel, new GBC(0, 1).setAnchor(GBC.EAST));
        add(size, new GBC(1, 1).setFill(GBC.HORIZONTAL).setWeight(100, 0).
                setInsets(1));
        add(bold, new GBC(0, 2, 2, 1).setAnchor(GBC.CENTER).
                setWeight(100, 100));
        add(italic, new GBC(0, 3, 2, 1).setAnchor(GBC.CENTER).
                setWeight(100, 100));
        add(sample, new GBC(2, 0, 1, 4).setAnchor(GBC.BOTH).
                setWeight(100, 100));
        pack();
        updateSample();
    }
 
    public void updateSample()
    {
        String fontFace = (String) face.getSelectedItem();
        int fontStyle = (bold.isSelected() ? Font.BOLD : 0)
                + (italic.isSelected() ? Font.ITALIC : 0);
        int fontSize = size.getItemAt(size.getSelectedIndex());
        Font font = new Font(fontFace, fontStyle, fontSize);
        sample.setFont(font);
        sample.repaint();
    }
 
    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new FontFrame();
                frame.setTitle("FontFrame");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
package gridbag;
 
import java.awt.*;
 
/**
 * Этот класс упрощает применение класса GridBagConstraints
 * Created by Михаил on 04.07.2016.
 */
public class GBC extends GridBagConstraints
{
    /**
     * Строит объект типа GBC, накладывая ограничения с помощью
     * параметров gridx и gridy, а все остальные ограничения
     * накладываются на сеточно-контейнерную компоновку по умолчанию
     * @param gridx Местоположение в сетке по горизонтали
     * @param gridy Местоположение в сетке по вертикали
     */
    public GBC(int gridx, int gridy)
    {
        this.gridx = gridx;
        this.gridy = gridy;
    }
    /**
     * Строит объект типа GBC, накладывая ограничения с помощью параметров
     * gridx, gridy, gridwidth, gridheught, а все остальные ограничения
     * накладываются на сеточно-контейнерную компоновку по умолчанию
     * @param gridx Местоположение в сетке по горизонтали
     * @param gridy Местоположение в сетке по вертикали
     * @param gridwidth Шаг сетки по горизонтали
     * @param gridheight Шаг сетки по вертикали
     */
    public GBC(int gridx, int gridy, int gridwidth, int gridheight)
    {
        this.gridx = gridx;
        this.gridy = gridy;
        this.gridwidth = gridwidth;
        this.gridheight = gridheight;
    }
 
    /**
     * Устанавливает привязку к сетке
     * @param anchor Степень привязки
     * @return this Объект для последующего видоизменения
     */
    public GBC setAnchor(int anchor)
    {
        this.anchor = anchor;
        return this;
    }
 
    /**
     * Устанавливает направление для заполнения
     * @param fill Направление заполнения
     * @return this Объект для последующего видоизменения
     */
    public GBC setFill(int fill)
    {
        this.fill = fill;
        return this;
    }
 
    /**
     * Устанавливает веса ячеек
     * @param weightx Вес ячейки по горизонтали
     * @param weighty Вес ячейки по вертикали
     * @return this Объект для последующего видоизменения
     */
    public GBC setWeight(double weightx, double weighty)
    {
        this.weightx = weightx;
        this.weighty = weighty;
        return this;
    }
    /**
     * Вводит пробелы вокруг данной ячейки
     * @param distance Пробел по всем направлениям
     * @return this Объект для последующего видоизменения
     */
    public GBC setInsets(int distance)
    {
        this.insets = new Insets(distance, distance, distance, distance);
        return this;
    }
    /**
     * Вводит пробелы вокруг данной ячейки
     * @param top Пробел сверху
     * @param left Пробел слева
     * @param right Пробел справа
     * @param bottom Пробел снизу
     * @return this Объект для последующего видоизменения
     */
    public GBC setInsets(int top, int left, int right, int bottom)
    {
        this.insets = new Insets(top, left, right, bottom);
        return this;
    }
    /**
     * Устанавливает внутреннее заполнение
     * @param ipadx Внутреннее заполнение по горизонтали
     * @param ipady Внутреннее заполнение по вертикали
     * @return this Объект для последующего видоизменения
     */
    public GBC setIpad(int ipadx, int ipady)
    {
        this.ipadx = ipadx;
        this.ipady = ipady;
        return this;
    }
}

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

textual
Листинг программы
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal anchor value
    at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1763)
    at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1604)
    at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2194)
    at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:2025)
    at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:806)
    at java.awt.Container.layout(Container.java:1503)
    at java.awt.Container.doLayout(Container.java:1492)
    at java.awt.Container.validateTree(Container.java:1688)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validate(Container.java:1623)
    at java.awt.Container.validateUnconditionally(Container.java:1660)
    at java.awt.Window.pack(Window.java:818)
    at gridbag.FontFrame.<init>(FontFrame.java:69)
    at gridbag.FontFrame$1.run(FontFrame.java:88)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal anchor value
    at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1763)
    at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1604)
    at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:2194)
    at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:2025)
    at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:806)
    at java.awt.Container.layout(Container.java:1503)
    at java.awt.Container.doLayout(Container.java:1492)
    at java.awt.Container.validateTree(Container.java:1688)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validateTree(Container.java:1697)
    at java.awt.Container.validate(Container.java:1623)
    at java.awt.Window.dispatchEventImpl(Window.java:2717)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.awt.EventQueue$4.run(EventQueue.java:718)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

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


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

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

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