Компоненты в JPanel не изменяют линию автоматически - PullRequest
1 голос
/ 18 октября 2011
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.*;

public class FileCutter
{
    public static void main(String[] args)
    {
        CutterWindow cw = new CutterWindow();
        cw.setResizable(false);
        cw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        cw.setVisible(true);
    }
}

class CutterWindow extends JFrame
{
    private JTabbedPane tabbedPane = new JTabbedPane();

    public static final int DEFAULT_WIDTH = 470;
    public static final int DEFAULT_HEIGHT = 480;
    public CutterWindow()
    {
        this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        tabbedPane.add("File Cut",new FileCutPanel());
        this.add(tabbedPane);
    }

}

class FileCutPanel extends JPanel
{   
    private JLabel lblFileName =  new JLabel("File Name:");
    private JTextField txtFileName = new JTextField();
    private JLabel lblFileSize = new JLabel("File Size:");
    private JTextField txtFileSize = new JTextField();
    private JButton btnViewFiles = new JButton("...");

    private JPanel panelSelectOperatingFile = new JPanel();

    public FileCutPanel()
    {   
        panelSelectOperatingFile.setLayout(new FlowLayout());
        panelSelectOperatingFile.add(lblFileName);
        txtFileName.setColumns(20);
        txtFileName.setEditable(false);
        panelSelectOperatingFile.add(txtFileName);
        panelSelectOperatingFile.add(btnViewFiles);
        panelSelectOperatingFile.add(lblFileSize);
        panelSelectOperatingFile.add(txtFileSize);
        txtFileSize.setColumns(20);
        txtFileSize.setEditable(false);

        this.add(panelSelectOperatingFile);
    }
}

В результате пять компонентов PanelSelectOperatingFile Panel находятся в одной строке и выходят за пределы ширины окна.и я знаю, что макет JPanel по умолчанию - flowlayout, я ожидал, что компоненты будут помещены в следующую строку, когда в предыдущей строке нет места.и я пытаюсь выяснить проблему, но я не могу

1 Ответ

2 голосов
/ 18 октября 2011

Не используйте панель panelSelectOperatingFile.Просто добавьте свои компоненты к JPanel, который вы расширяете.

Вы не можете вкладывать FlowLayouts.Вот почему:

Учебное пособие по Oracle FlowLayout

...