2014-01-28 60 views
2

如何在JTextField上添加JLabel简单文本。 我尝试了很多命令,正如你可以在我的代码中看到的一样,但是无法使用。如何将JLabel文本放在JTextField上

这是我的代码快照

private JPanel createTextPanel() { 
     int panelWidth = PANEL_SIZE.width; 
     int panelHeight = PANEL_SIZE.height/3; 
     Dimension panelSize = new Dimension(panelWidth,panelHeight); 
     JPanel textPanel = new JPanel(); 
     textPanel.setPreferredSize(panelSize); 
     //textPanel.setLayout(null); 
     /* Add text */ 
     JLabel Text_RED = new JLabel(); 
     Text_RED.setText("Red"); 
     //Text_RED = new JLabel("\nRED\n"); 
     //Text_RED.setHorizontalTextPosition(SwingConstants.TOP); 
     //Text_RED.setVerticalAlignment(SwingConstants.TOP); 
     Red = new JTextField(3); 
     //Red.setVerticalAlignment(JTextField.TRAILING); 
     Red.setLocation(100,100); 

     //Red.setLocation(50, 50); 
     JLabel Text_Green = new JLabel("Green"); 
     Green = new JTextField(3); 

     JLabel Text_Blue = new JLabel("Blue"); 
     Blue = new JTextField(3); 

     //setLayout(new GridLayout(2,2,10,10)); 
     textPanel.add(Text_RED); 
     textPanel.add(Red); 

     textPanel.add(Text_Green); 
     textPanel.add(Green); 

     textPanel.add(Text_Blue); 
     textPanel.add(Blue); 

     return textPanel; 
    } 

回答

3

建议:

  • 不要使用空布局和绝对定位。虽然看起来最初使用这些工具是创建复杂GUI的最简单方法,但这实际上是一个新手谬误,因为越多了解和使用布局管理器,越会发现它们使创建GUI的工作变得更容易,结果更具吸引力。
  • 了解和使用布局管理器。 Tutorial link
  • 考虑使用BorderLayout并在BorderLayout.PAGE_END中添加JLabel BorderLayout.CENTER和JTextField。作为一个方面说明,我通常避免将JTextField放置在BorderLayout.CENTER位置,因为如果GUI更改大小,这会导致字段的水平拉伸,我认为这并不美观。
+1

'JPanel'使用[FlowLayout] [默认](http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html)。 –