2014-01-28 3 views
2

Как добавить простой JLabel текст поверх JTextField. Я пробовал много команд, как вы можете видеть в моем коде, но ничего не работает.Как разместить 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

Предложения:

  • Не используйте пустые макеты и абсолютное позиционирование. Хотя изначально кажется, что использование этих инструментов - это самый простой способ создания сложных графических интерфейсов, это действительно ошибочность новичка, поскольку чем больше вы понимаете и используете менеджеров макета, тем больше вы обнаружите, что они значительно упрощают работу с графическим интерфейсом , и результаты гораздо более привлекательны.
  • Узнайте о менеджерах компоновки и используйте их. Tutorial link.
  • Рассмотрите возможность использования BorderLayout и добавления JLabel BorderLayout.CENTER и JTextField в BorderLayout.PAGE_END. В качестве примечания я обычно избегаю размещения JTextFields в позиции BorderLayout.CENTER, так как это приведет к горизонтальному растягиванию поля, если графический интерфейс изменит размер, что, по моему мнению, не является эстетически приятным.
+1

«JPanel» использует «FlowLayout» [по умолчанию] (http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html). –

Смежные вопросы