2012-02-20 3 views
0

Я делаю RPG, чтобы практиковать мои новички. Я хочу создать набор параметров для создания персонажа в сетке 1x4 с кнопкой подтверждения внизу.Остановить JTextField Java от расширения до панели?

Моя проблема заключается в том, что я хочу, чтобы JTextField переставал выглядеть так, как будто он был предназначен для потребления любого текста, который может иметь мир. Смотрите здесь:

[Хорошо, хорошо, я не могу добавлять изображения еще.]

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

Я пробовал setBounds(), setSize(), setPreferredSize() ... как я могу сделать это текстовое поле соответствующим размером?

Редактировать: Извините за не размещение соответствующего кода:

package practice; 

import java.awt.GridLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     JFrame failFrame = new JFrame(); 
     JPanel failPanel = new JPanel(); 
     failPanel.setLayout(new GridLayout(0, 4)); 

     failPanel.add(new JTextField()); 
     failPanel.add(new JPanel()); 
     failPanel.add(new JTextField()); 
     failPanel.add(new JPanel()); 

     failFrame.add(failPanel); 
     failFrame.setSize(800, 800); 
     failFrame.setLocationRelativeTo(null); 
     failFrame.setVisible(true); 
    } 

} 

Это приводит к тому, текстовые поля, чтобы быть намного выше, чем я хочу, чтобы они были. Можно ли использовать gridLayout и снизить их высоту?

+2

Post ... ваш ... код. Swing использует компоновщиков для компоновки компонентов. Способ поведения texfield зависит от используемого менеджера компоновки и того, как он используется. Методы setXxxx, которые вы пытались, почти никогда не должны использоваться. –

+0

Извините, код завершен. –

+0

Пожалуйста, отредактируйте свой вопрос, чтобы включить [sscce] (http://sscce.org/), который показывает, что вы пробовали. – trashgod

ответ

0

Возможно, LayoutManager может помочь. Если текстовое поле и метка должны иметь одинаковый размер, вы можете подумать о gridlayout.

см: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

+0

Я использовал BorderLayout, и сейчас я попробовал GridLayout. Это разделило два предмета, и JLabel мог технически быть таким же гигантским, как JTextField (я не могу сказать), но я должен был сказать, что я хотел, чтобы JTextField был таким же высоким, как текст в JLabel. С GridLayout он все еще невероятно высок. Я собираюсь попробовать BoxLayout, спасибо за эту ссылку. –

+0

BoxLayout тоже не годится. Текстовое поле по-прежнему имеет абсурдно непропорциональную высоту. –

+0

@MitchellTurlington: не слепо проверить все возможные менеджеры макетов? Узнайте, как они работают, и используйте соответствующий, с соответствующими настройками. В учебнике Swing обсуждаются все из них. –

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