2016-10-20 3 views
0

Вопрос: Я хочу установить изображение из файла для JLabel. Как всегда каждый раз, когда я запускаю его, я получаю эту ошибку ниже --- Любая помощь в определении этого результата будет очень признательна, спасибо!Попытка установить значок на jlabel продолжает ломать

Вот мой основной класс

Exception in thread "main" java.lang.IllegalArgumentException: horizontalAlignment 
     at javax.swing.JLabel.checkHorizontalKey(JLabel.java:608) 
     at javax.swing.JLabel.setHorizontalAlignment(JLabel.java:766) 
     at javax.swing.JLabel.<init>(JLabel.java:163) 
     at javax.swing.JLabel.<init>(JLabel.java:183) 
     at widget.Widget.<init>(Widget.java:30) 
     at widget.Widget.main(Widget.java:48) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

public class Widget extends JFrame { 
    static String temp; 
    static String icon_image; 

    public Widget(){ 
     setUndecorated(true); 
     setSize(200,200); 
     temp = weather.temp(); 
     icon_image = "C:\\Users\\jsnow\\IdeaProjects\\SnowWidget_x\\Images\\partlycloudy.gif"; 
         //weather.weather_pic(); 

     JLabel myText = new JLabel("I: "+ temp, 
       SwingConstants.TOP); 

     JLabel mypic = new JLabel("h", SwingConstants.BOTTOM); 

     mypic.setIcon(new ImageIcon(icon_image)); 

     add(myText); 
     add(mypic); 

     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     setVisible(true); 

     Shape shape = new Ellipse2D.Float(0,0,200,200); 
     AWTUtilities.setWindowShape(this, shape); 

    } 
    public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException { 
     new Widget(); 


    } 

} 
+2

ошибка говорит вам именно то, что случилось и где - вы используете неправильный второй параметр для параметра горизонтального выравнивания для вашего вызова конструктора JLabel. Прочтите [JLabel API] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JLabel.html#JLabel-javax.swing.Icon-int-), чтобы узнать, что разрешено. –

+0

Хорошо, как бы я это исправить? Пример @HovercraftFullOfEels, пожалуйста, – Snowman08

+0

Вы можете использовать горизонтальные выравнивания только с помощью JLabel. Но здесь вы использовали вертикальное выравнивание – Blip

ответ

1

Изменить оба места вы звоните в new JLabel к чему-то вроде этого:

JLabel mypic = new JLabel("h", JLabel.CENTER); 
+0

Спасибо, что сработало! – Snowman08