Поместите текстовые поля в отдельные строки - PullRequest
3 голосов
/ 17 декабря 2011
MainClass(){
    JFrame main = new JFrame("Login Form ");
    main.setBounds(350,150,500,500);
    main.setVisible(true);
    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    name = new JTextField(10);
    pass = new JTextField(10);
    main.setLayout(new GridLayout(0,1));
    JPanel pane = new JPanel();
    main.add(pane);
    main.add(new JLabel("Username: "));
    pane.add(name);
    //main.add(pane);
    pane.add(new JLabel("Password: "));
    pane.add(pass);
    submit = new JButton("Submit");
    pane.add(submit);
    submit.addActionListener(new Handler());
}

Я хочу разделить текстовые поля на отдельные строки после надписей username и name для текстового поля.Мне нужно перевести курсор на новую строку.

Ответы [ 2 ]

7 голосов
/ 17 декабря 2011

я хочу разделить текстовые поля на отдельные строки

Layout

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

class MainClass {

    JTextField name;
    // This should be a JPasswordField!
    JTextField pass;
    JButton submit;

    MainClass(){
        JFrame main = new JFrame("Login Form ");
        // Don't use this nonsense!
        //main.setBounds(350,150,500,500);
        main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        name = new JTextField(10);
        pass = new JTextField(10);
        main.setLayout(new GridLayout(0,1));
        JPanel pane = new JPanel(new GridLayout(0,1));
        main.add(pane);
        pane.add(new JLabel("Username: "));
        pane.add(name);
        pane.add(new JLabel("Password: "));
        pane.add(pass);
        submit = new JButton("Submit");
        pane.add(submit);
        //submit.addActionListener(new Handler());
        main.pack();
        main.setVisible(true);
    }

    public static void main(String[] args) {
        MainClass mc = new MainClass();
    }
}

Если бы я создавал экран входа в систему, его можно было бы расположить более точно по этим направлениям (с метками справа, а кнопка на его собственной панели - слева как упражнение для читателя).

Log-In frame

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

class MainClass {

    JTextField name;
    JPasswordField pass;
    JButton submit;

    MainClass(){
        JFrame main = new JFrame("Login Form ");
        main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        name = new JTextField(10);
        pass = new JPasswordField(10);

        JPanel gui = new JPanel(new BorderLayout(3,3));
        gui.setBorder(new EmptyBorder(5,5,5,5));
        main.setContentPane(gui);

        JPanel labels = new JPanel(new GridLayout(0,1));
        JPanel controls = new JPanel(new GridLayout(0,1));
        gui.add(labels, BorderLayout.WEST);
        gui.add(controls, BorderLayout.CENTER);

        labels.add(new JLabel("Username: "));
        controls.add(name);
        labels.add(new JLabel("Password: "));
        controls.add(pass);
        submit = new JButton("Submit");

        gui.add(submit, BorderLayout.SOUTH);
        main.pack();
        main.setVisible(true);
    }

    public static void main(String[] args) {
        MainClass mc = new MainClass();
    }
}
1 голос
/ 17 декабря 2011

Использовать BoxLayout; создайте JPanel, используйте SetLayout, чтобы установить его в BoxLayout, и установите BoxLayout в PAGE_AXIS. Затем все, что вы добавляете, перемещается по вертикали вниз по «странице». Существуют варианты выравнивания, см. API для BoxLayout или учебник Oracle / Sun / Java по менеджерам компоновки.

...