2016-07-06 129 views
1

代码运行得很好,直到我试图重新定位JLabel为止,虽然它在我的代码中没有显示任何错误,但它拒绝运行它并给我以下错误...我试图将标签移动到JFrame窗口的左上角,并且我用来这样做的方法应该是非常好的。至少据我所知, [新手爪哇开发]Eclipse不会运行我的代码,并且编辑器根本没有显示任何代码错误

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: verticalAlignment 
at javax.swing.JLabel.checkVerticalKey(JLabel.java:627) 
at javax.swing.JLabel.setVerticalAlignment(JLabel.java:713) 
at io.Arimore.Launcher.createAndShowGUI(Launcher.java:27) 
at io.Arimore.Launcher.access$0(Launcher.java:13) 
at io.Arimore.Launcher$1.run(Launcher.java:46) 
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) 

代码:

package io.Arimore; 
import java.awt.*; 
import javax.swing.*; 

/* FrameDemo.java requires no other files. */ 
public class Launcher { 

/** 
* Create the GUI and show it. For thread safety, 
* this method should be invoked from the 
* event-dispatching thread. 
*/ 
private static void createAndShowGUI() { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    Dimension d = tk.getScreenSize(); //Gets the user screen size 
    int scrnHigh = d.height; //Pulls out the High 
    int scrnWide = d.width; //Pulls out the Wide 
    //Create and set up the window. 
    JFrame frame = new JFrame("Welcome to Arimore.io"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JLabel emptyLabel = new JLabel("Arimore.io - v0.01A"); 
    emptyLabel.setPreferredSize(new Dimension(175, 100)); 
    int quatrainsY = (d.height/2); 
    int elabelH = (0 - quatrainsY); 
    int elabelW = (0 - (d.width/2)); 
    emptyLabel.setVerticalAlignment(elabelH); 
    emptyLabel.setHorizontalAlignment(elabelW); 
    frame.getContentPane().add(emptyLabel); 

    //Display the window. 
    frame.pack(); 

    //setSize(scrnWide *9/10, scrnHigh *9/10);//sets screen to 0.9 size 
    frame.setSize(scrnWide, scrnHigh);//sets screen to FULL size 
    //setLocation(scrnWide *1/20, scrnHigh *1/20);//CENTER it for 9/10th size 
    frame.setLocation(0, 0);// 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    //Schedule a job for the event-dispatching thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
} 
+1

你传递一个负值给'setVerticalAlignment'。该方法(根据[Javadoc](https://docs.oracle.com/javase/7/docs/api/javax/swing/JLabel.html#setVerticalAlignment(int)))接受3个' SwingConstants'('TOP','CENTER' **或**'BOTTOM')。 –

+0

所以为了让我把它移到左上角我需要做什么 –

+0

nvm tzimhoch覆盖它 –

回答

3

JLabel.setVerticalAlignment采用int,但INT值应该JLabel.TOP,JLabel.MIDDLE,或JLabel.BOTTOM。

此外,JLabel.setHorizo​​ntalAlignment将采用JLabel.LEFT,JLabel.CENTER和JLabel.RIGHT。

任何其他值都会导致非法参数异常。

+0

OMG谢谢你的工作!我很快就会接受答案。现在它不会让我...... –

相关问题