2015-08-30 6 views
1

в моей рамке, я добавляю ярлыки благодаря панели инструментов. проблема, которую я не могу решить, заключается в том, что она добавляет метку в одну строку, тогда как я хочу добавить \ n между одним и тем, чтобы создать столбец! Я не знаю, как это сделать. любая помощь? Спасибо!Установить расположение ярлыков в панелях

+0

Можете ли вы поделиться соответствующими битами вашего кода? – lenz

ответ

2

Ключ, который, я считаю, будет компоновкой контейнера, который держит JLabels. Если вы предоставите этому контейнеру правильную компоновку, такую ​​как BoxLayout, ориентированную вдоль PAGE_AXIS, или GridLayout(0, 1) для одного столбца с переменным количеством строк, тогда JLabels будет складывать один поверх другого.

например,

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

public class StackingLabels extends JPanel { 
    public static final String[] TEXTS = { "Sunday", "Monday", "Tuesday", 
      "Wednesday", "Thursday", "Friday", "Saturday" }; 

    public StackingLabels() { 
     setLayout(new GridLayout(0, 1)); 
     for (String text : TEXTS) { 
      add(new JLabel(text)); 
     } 
    } 

    private static void createAndShowGui() { 
     StackingLabels mainPanel = new StackingLabels(); 

     JFrame frame = new JFrame("StackingLabels"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGui(); 
      } 
     }); 
    } 
} 

Другая мысль заключается в использовании JList для отображения строк, а не сложенных компоненты JLabel.

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