2015-06-09 5 views
0

Пробовал надеть раму некоторые компоненты поворота. Этот код работал несколько дней назад. Теперь это не работа, ничего. Может кто-нибудь может сказать мне, что это не так?Ошибка в Swing java - IllegalArgumentException

public static void main(String[] args) { 
    JFrame mainFrame = new JFrame(); 
    mainFrame.setSize(500, 400); //Size of frame 
    mainFrame.setTitle("Cinema City"); //Set title 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JLabel mainLabel = new JLabel("Welcome to Cinema City catalog!"); 
    JLabel actorLabel = new JLabel("Actors: "); 
    JLabel laLabel = new JLabel("Last added: "); 
    JLabel searchLabel = new JLabel("How to search ?"); 

    GridBagConstraints gbc = new GridBagConstraints(); 

    mainFrame.add(mainLabel, new GridBagConstraints(4, 0, 1, 3, 1, 1, 
      GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, 
      new Insets(20, 160, 0, 0), 0, 0)); 

    mainFrame.add(actorLabel, new GridBagConstraints(0, 0, 1, 1, 1, 1, 
      GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, 
      new Insets(100, 0, 0, 0), 0, 0)); 

    mainFrame.setVisible(true); 

Это ошибка:

Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null) 
at java.awt.BorderLayout.addLayoutComponent(Unknown Source) 
at javax.swing.JRootPane$1.addLayoutComponent(Unknown Source) 
at java.awt.Container.addImpl(Unknown Source) 
at java.awt.Container.add(Unknown Source) 
at javax.swing.JFrame.addImpl(Unknown Source) 
at java.awt.Container.add(Unknown Source) 
at GUI.main(GUI.java:40) 

ответ

0

макета не упоминаются для конкретного JFrame - mainframe

Добавьте эту строку после объявления JFrame

mainFrame.setLayout(new GridBagLayout()); 

Должен работать нормально.

3

Вы на самом деле не устанавливая макет в GridBagLayout, так что до сих пор по умолчанию (который будет FlowLayout).

Конечно, только GridBagLayout может фактически обрабатывать GridBagConstraints. Это может быть исправлен путем изменения вашей декларации JFrame mainFrame = new JFrame(new GridBagLayout());

0

Вы не установили рамки. после создания объекта кадра напишите этот код.

new GridBagLayout(); 
mainFrame.setLayout(gbl); 

свою работу