2013-01-13 84 views
1

我到處搜索,並且有大量的文檔,但是都是令人困惑的,並且有一半的測試代碼不起作用,所以我問。是什麼使一個JLabel,將其位置(用整數或尺寸),並把它添加到JFrame添加兩個簡單的JLabel到一個jframe

package com.notelek.notify; 

import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Gui { 



    public static void main(String[] args){ 

    } 

    public static void notify(String line1, String line2, String imagepath, int style){ 
     GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
     int width = gd.getDisplayMode().getWidth(); 
     int swidth = width - 320; 

     JFrame notification = new JFrame(); 
     notification.setSize(new Dimension(320,64)); 
     notification.setLocation(swidth, 0); 
     notification.setUndecorated(true); 
     notification.setVisible(true); 

     JPanel main = new JPanel(); 

     JLabel notifyline1 = new JLabel(); 
     notifyline1.setText("test"); 
     notifyline1.setLocation(0, 0); 
     main.add(notification); 
    } 

} 
+1

你永遠不會將你的標籤添加到任何容器,那麼它怎麼會顯示出任何容器? – us2012

+0

@ us2012請讓這個答案(也許有一個小例子),所以我可以進一步投票它 – MadProgrammer

+0

你不需要''GraphicsEnvironment'','notification.setLocation(swidth,0);'替換'notification.setLocationRelativeTo null);' –

回答

2

我想你的意思notification.add(main);和順序很重要:

import java.awt.*; 
import javax.swing.*; 

public class Gui { 

    public static void main(String[] args){ 
     notify("", "", "", 0); 
    } 

    public static void notify(String line1, String line2, String imagepath, int style){ 
     JFrame notification = new JFrame(); 
     JPanel main = new JPanel(); 
     JLabel notifyline1 = new JLabel(); 
     notifyline1.setText("test"); 
     main.add(notifyline1); 
     notification.add(main); 
     notification.setSize(new Dimension(320,64)); 
     notification.setLocationRelativeTo(null); 
     notification.setUndecorated(true); 
     notification.setVisible(true); 
    } 
} 
+0

不需要調用該方法(在另一個類中這樣做),但它的工作原理!我將如何添加2行文字? – user1631686

+0

*「..但它的工作原理!」*我認爲這個答案爲說服你你正在做的事情的陷阱還爲時過早。話雖如此,如果您認爲它回答了這個問題,請在您有機會時接受(http://meta.stackexchange.com/a/65088/155831)答案。 *「如何添加2行文字?」*對於一個「JLabel」? SO上有很多例子。搜索。 –

3

您需要添加JLabel一個可見的容器,最簡單的方式,否則就不能顯示出來屏幕上。

我也想你實際上打算添加JPanelJFrame,而不是相反 - 這樣的事情:

... 
main.add(notifyline1); 
...  
notification.add(main); 
...