2016-09-30 75 views
2

我想讓我的JLabel具有適合文本的邊框。我曾嘗試使用整數來調整大小,但不起作用。誰能幫忙? 這裏是我的Java代碼:如何使邊框適合JLabel

package first; 
import java.awt.*; 
import javax.swing.*; 
public class TopLevelWindow { 
    static int hgap=5; 
    static int vgap=5; 

     private static void createWindow() { 
      //Create and set up the window. 
      JFrame frame = new JFrame("Window"); 
      JLabel textLabel = new JLabel("Welcome Child",SwingConstants.CENTER); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.getContentPane().add(textLabel, BorderLayout.CENTER); 
      textLabel.setPreferredSize(new Dimension(300, 100)); 
      textLabel.setForeground(Color.YELLOW); 
      textLabel.setBorder(BorderFactory.createLineBorder(Color.YELLOW, 5)); 
      //Display the window. 
      frame.setLocationRelativeTo(null); 
      frame.pack(); 
      frame.setVisible(true); 
      frame.getContentPane().setBackground(Color.BLACK); 
     } 
     public static void main(String[] args) { createWindow(); } 
} 

我希望它看起來像在這個文本框: http://www.bogleech.com/halloween/undertale-grillbys.png 是可能在java中?

回答

0

如果您想從屏幕獲得效果,您應該將垂直對齊設置爲NORTH,並使用由白色外邊框和內部不可見邊框組成的複合邊框,該邊框看起來像邊距。試試這段代碼:

JLabel textLabel = new JLabel("Test test test test test test test..."); 
textLabel.setPreferredSize(new Dimension(500, 250)); 
textLabel.setForeground(Color.WHITE); 
textLabel.setFont(new Font("Courier", Font.BOLD, 30)); 

// sets the text to the upper left corner 
textLabel.setVerticalAlignment(SwingConstants.NORTH); 

textLabel.setBorder(new CompoundBorder(// sets two borders 
BorderFactory.createMatteBorder(10, 10, 10, 10, Color.WHITE), // outer border 
BorderFactory.createEmptyBorder(10, 10, 10, 10))); // inner invisible border as the margin 
+0

沒有這並不完全是我一直在尋找... –

+0

你能描述一下你想達到的目標嗎?你想讓邊框從上,下,左,右「摸」文字嗎? –

+0

我現在編輯了我的文章,包含一個類似於我想要的文本框圖片的鏈接,如果這對您更有用 –

0

顯然,如果您設置JLabel的大小300×300,其邊框將圍繞該矩形。

相反,離開JLabel的大小獨自一人,並把它與一箇中心佈局在面板內部,然後將邊境地區的面板上:

JLabel textLabel = new JLabel("Welcome Child",SwingConstants.CENTER); 
textLabel.setForeground(Color.YELLOW); 
textLabel.setBorder(BorderFactory.createLineBorder(Color.YELLOW, 5)); 

JPanel textPanel = new JPanel(new GridBagLayout()); 
textPanel.add(textLabel); 
textPanel.setPreferredSize(new Dimension(300, 100)); 

frame.getContentPane().add(textPanel, BorderLayout.CENTER);