Объясните почему не запускается программа. - 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)