2015-03-26 3 views
0

Я новичок в Java Swing. я создал простой JFrame, как показано ниже в коде, но когда появляется строка statusLabel = new JLabel("statusLabel", JLabel.WEST);, я получаю приведенные ниже ошибки во время выполнения, и когда я прокомментирую эту строку, появляется JFrame.JLabel указывает на ошибку

, пожалуйста, поймите, почему эта строка statusLabel = new JLabel("statusLabel", JLabel.WEST); вызывает ошибку.

public GUI() { 
    // TODO Auto-generated constructor stub 
    prepareGUI(); 
} 
private void prepareGUI() { 
    // TODO Auto-generated method stub 
    mainFrame = new JFrame("Swing Example"); 
    mainFrame.setSize(400, 400); 

    headerLabel = new JLabel("headerLabel", JLabel.CENTER); 
    statusLabel = new JLabel("statusLabel", JLabel.WEST);//this line when it is exist, causes errors 

    mainFrame.add(headerLabel); 
    mainFrame.add(statusLabel); 
    mainFrame.setVisible(true); 
} 

public static void main(String[] args) { 
    GUI gui = new GUI(); 
} 

ошибка:

Exception in thread "main" java.lang.IllegalArgumentException: horizontalAlignment 
at javax.swing.JLabel.checkHorizontalKey(Unknown Source) 
at javax.swing.JLabel.setHorizontalAlignment(Unknown Source) 
at javax.swing.JLabel.<init>(Unknown Source) 
at javax.swing.JLabel.<init>(Unknown Source) 
at test.GUI.prepareGUI(GUI.java:23) 
at test.GUI.<init>(GUI.java:15) 
at test.GUI.main(GUI.java:31) 

Update:

теперь после использования .left вместо этого, текст, предположим, будет помещен в .center исчез. почему это происходит

+0

'statusLabel = новый JLabel ("statusLabel", JLabel.LEFT);' –

+0

@MuratK. см. раздел обновления выше – user2121

ответ

1

Вы не можете использовать JLabel.WEST по Documentation:

общественного JLabel (String текст, INT HorizontalAlignment)

Создает экземпляр JLabel с заданным текстом и горизонтального выравнивания . Метка центрирована по вертикали в области отображения.

Параметры: текст - текст, отображаемый на этикетке.
horizontalAlignment - одна из следующих констант, определенных в SwingConstants: LEFT, CENTER, RIGHT, LEADING или TRAILING.

Единственные варианты HorizontalAlignment являются LEFT, CENTER, RIGHT, LEADING or TRAILING

Так что в вашем случае использования JLabel.LEFT

+0

, пожалуйста, ознакомьтесь с разделом обновления выше – user2121

+0

@ user2121 попробуйте добавить их в обратном порядке statusLabel, затем headerLabel – CMPS

2

Это не является допустимым аргументом для выравнивания.

От API:

HorizontalAlignment - одна из следующих констант, определенных в SwingConstants: LEFT, CENTER, RIGHT, вводных или завершающих.

Редактировать. Вы также добавляете JLabels в положение по умолчанию JFrame, которое в вашем случае будет BorderLayout.CENTER. Вот почему ваш JLabel не виден. Либо измените компоновку JFrame, либо поместите JLabels в разные позиции в свой BorderLayout по умолчанию. Более подробная информация здесь: http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

+0

, см. раздел обновления выше – user2121

+0

@ user2121 Я обновил свой ответ. –

+0

ok, как изменить макет jframe – user2121

0

Вы должны добавить JLabel сек в BorderLayout

See here

+0

can u, пожалуйста, укажите пример – user2121

Смежные вопросы