2014-02-18 2 views
0

Я уже давно это делаю, но, похоже, я не могу получить его. Я пытаюсь создать JPanel с надписью JTextArea выше и двумя JLabels ниже, но мой JLabel заканчивается в левой части моего JTextArea, и я не могу заставить другого появиться.JPanels: один с JTextArea, а другой с JLabel

Вот мой код (жаль дисплея stuff- только наполнитель действительно):

public JPanel contentPane() { 
    JPanel something = new JPanel(); 

    String information = "Please"; 

    info = new JTextArea(information, 4, 30); 
    info.setEditable(false); 
    info.setLineWrap(true); 
    info.setWrapStyleWord(true); 

    JPanel one = new JPanel(new BorderLayout()); 
    one.setBackground(Color.WHITE); 
    one.setLocation(10, 10); 
    one.setSize(50, 50); 
    one.add(info, BorderLayout.CENTER); 
    something.add(one, BorderLayout.NORTH); 

    JPanel two = new JPanel(new BorderLayout()); 
    two.setBackground(null); 
    two.setLocation(220, 10); 
    two.setSize(50, 50); 
    two.add(new JLabel("Please work"), BorderLayout.EAST); 
    two.add(new JLabel("Oh gosh, please"), BorderLayout.WEST); 
    something.add(two, BorderLayout.SOUTH); 

    something.setOpaque(true); 
    return something; 
} 

public static void GUI() { 
    JFrame frame = new JFrame("You Guessed It!"); 

    DisplayStudent panel = new DisplayStudent(); 
    frame.setContentPane(panel.contentPane()); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 150); 
    frame.setVisible(true); 
} 

Пожалуйста и спасибо всем, кто занимает время, чтобы помочь.

+0

Какую версию JDK вы используете? – masterX244

+0

@ masterX244 7.4 Я верю. – Zanpo

ответ

6

При создании вы что-то, вы не указали какой-либо менеджер компоновки, но в дальнейшем вы попытаетесь добавить один к что-то используя константы BorderLayout - которая не будет работать, так как менеджер компоновки по умолчанию для JPanel - FlowLayout.

Попробуйте это вместо этого;

JPanel something = new JPanel(new BorderLayout()); 
+0

В качестве альтернативы вы можете использовать GridLayout(), который позволит вам прокладывать любые элементы в сетке: http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html – sparks

+0

GridLayout приятен до тех пор, пока вы хотите иметь все компоненты в панели с точно таким же размером. Когда вы начинаете смешивать размеры и хотите иметь разную динамику (например, некоторые могут масштабироваться горизонтально, другие вертикально, привязаны к северу, некоторые должны растягиваться и т. Д. И т. Д.), Вы должны перейти на GridBagLayout, который, безусловно, является наиболее «общим» «Менеджер макетов, который я использую. –

+0

@Markus Millfjord Это сработало, но теперь мои JLabels появляются в центре, а на востоке и западе почтительно. Что еще мне не хватает? – Zanpo

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