2013-12-16 89 views
1

我有一個JLabel。我只是添加了一個背景圖片。現在我想顯示一個文本。 label.setText("blabla");在圖像後面顯示文字。我該怎麼辦?無法在具有背景圖像的JLabel上顯示文本

這裏是我的代碼片段

public Jadmin() { 

    setSize(800,500); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    setUndecorated(true); 

    setLocationRelativeTo(null); 

    JLabel jl=new JLabel(new ImageIcon("c://image.jpg")); 

    jl.setLayout(null); 

    add(jl); 

    jl.setText("hadsffffffffffffffffffi"); 

    setVisible(true); 
enter code here 
    } 
+0

http://stackoverflow.com/questions/ 8019792/set-background-image-in-jlabel-label-box-with-dynamic-text –

回答

1

使用的JLabel的setIconTextGap(int iconTextGap)方法,並設置圖像的準確寬度,但在負的位置,所以如果你想要的文字可以顯示在圖像上。

例如,如果圖像寬度爲125px,請使用如下方法設置:setIconTextGap(-125)以在圖像上顯示文本。

編輯:你可以這樣做:不同的方式在JLabel到顯示器上的圖標文字

ImageIcon bg; 

public Jadmin() { 

    setSize(800,500); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    setUndecorated(true); 

    setLocationRelativeTo(null); 

    JLabel jl=new JLabel(); 

    bg = new ImageIcon("IMAGE_PATH"); 
    jl.setIcon(bg); 
    jl.setIconTextGap(-IMAGE_WIDTH); 
    jl.setOpaque(true); 
    jl.setLayout(null); 

    add(jl); 

    jl.setText("hadsffffffffffffffffffi"); 

    setVisible(true); 
enter code here 
    } 
+0

你能詳細闡述一下嗎? –

+0

你需要詳細說明什麼? – iWumbo

+0

嘗試....不工作 –

1

下面舉例說明:

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

public class LabelImageText extends JPanel 
{ 
    public LabelImageText() 
    { 
     JLabel label1 = new JLabel(new ColorIcon(Color.ORANGE, 100, 100)); 
     label1.setText("Easy Way"); 
     label1.setHorizontalTextPosition(JLabel.CENTER); 
     label1.setVerticalTextPosition(JLabel.CENTER); 
     add(label1); 

     // 

     JLabel label2 = new JLabel(new ColorIcon(Color.YELLOW, 200, 150)); 
     label2.setLayout(new BoxLayout(label2, BoxLayout.Y_AXIS)); 
     add(label2); 

     JLabel text = new JLabel("More Control"); 
     text.setAlignmentX(JLabel.CENTER_ALIGNMENT); 
     label2.add(Box.createVerticalGlue()); 
     label2.add(text); 
     label2.add(Box.createVerticalStrut(10)); 

     // 

     JLabel label3 = new JLabel(new ColorIcon(Color.GREEN, 200, 150)); 
     label3.setLayout(new GridBagLayout()); 
     add(label3); 

     JLabel text3 = new JLabel(); 
     text3.setText("<html><center>Text<br>over<br>Image<center></html>"); 
     text3.setLocation(20, 20); 
     text3.setSize(text3.getPreferredSize()); 
     label3.add(text3); 

     // 

     JLabel label4 = new JLabel(new ColorIcon(Color.CYAN, 200, 150)); 
     add(label4); 

     JTextPane textPane = new JTextPane(); 
     textPane.setText("Add some text that will wrap at your preferred width"); 
     textPane.setEditable(false); 
     textPane.setOpaque(false); 
     SimpleAttributeSet center = new SimpleAttributeSet(); 
     StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER); 
     StyledDocument doc = textPane.getStyledDocument(); 
     doc.setParagraphAttributes(0, doc.getLength(), center, false); 
     textPane.setBounds(20, 20, 75, 100); 
     label4.add(textPane); 
    } 

    public static class ColorIcon implements Icon 
    { 
     private Color color; 
     private int width; 
     private int height; 

     public ColorIcon(Color color, int width, int height) 
     { 
      this.color = color; 
      this.width = width; 
      this.height = height; 
     } 

     public int getIconWidth() 
     { 
      return width; 
     } 

     public int getIconHeight() 
     { 
      return height; 
     } 

     public void paintIcon(Component c, Graphics g, int x, int y) 
     { 
      g.setColor(color); 
      g.fillRect(x, y, width, height); 
     } 
    } 

    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame("LabelImageText"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new LabelImageText()); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 
+0

有趣的是,你使用JLabel作爲容器:-) – mKorbel