Поместите Label и TextField в одну строку - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел бы создать калькулятор в Java Swing, но у меня возникла проблема. Я хочу поместить одну метку и одно текстовое поле в одну строку, а не в два столбца, но в одну строку, например: Number 1: (label) (здесь текстовое поле)в той же строке, извините за мой английский.

Мой код:

private JPanel mainPan; //= new JPanel();
private JLabel title;
private JLabel nb1;
private JLabel nb2;
private JButton button;
private JTextField textField; //= new JTextField();

public Fenetre() {
    super ("Calculator");
    mainPan = new JPanel();
    title = new JLabel();
    nb1 = new JLabel();
    nb2 = new JLabel();
    button= new JButton();
    textField = new JTextField();

    setMinimumSize(new Dimension(400, 500));
    setSize(400, 500);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(Fenetre.EXIT_ON_CLOSE);
    setResizable(true);

    setIconImage(new ImageIcon("C:\\Users\\sidot\\Desktop\\download.png").getImage());

    mainPan.setBackground(Color.darkGray);
    mainPan.setLayout(new GridLayout(2,0));
    Border border = LineBorder.createBlackLineBorder();


    title.setText("Calculator 1.0");
    title.setFont(new Font("MONOSPACED", Font.PLAIN, 20));
    title.setForeground(Color.WHITE);
    title.setHorizontalTextPosition(JLabel.CENTER);
    title.setVerticalTextPosition(JLabel.BOTTOM);
    title.setBorder(border);
    mainPan.add(title);

    nb1.setText("Number 1");
    nb1.setFont(new Font("MONOSPACED", Font.BOLD, 15));
    nb1.setForeground(Color.WHITE);
    nb1.setHorizontalTextPosition(JLabel.LEFT);
    nb1.setVerticalTextPosition(JLabel.CENTER);
    nb1.setBorder(border);
    mainPan.add(nb1);

    nb2.setText("Number 2");
    nb2.setFont(new Font("MONOSPACED", Font.BOLD, 15));
    nb2.setForeground(Color.WHITE);
    nb2.setHorizontalTextPosition(JLabel.LEFT);
    nb2.setVerticalTextPosition(JLabel.CENTER);
    nb2.setBorder(border);
    mainPan.add(nb2);

    this.setContentPane(mainPan);
    this.setVisible(true);
}

Я хочу иметь после номера 1 и номера 2 текстовое поле.Спасибо

1 Ответ

0 голосов
/ 12 ноября 2018

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

JPanel rowPanel = new JPanel();
rowPanel.add( label1 );
rowPanel.add( textField1 );
mainPanel.add( rowPanel );

Суть в том, что вы можете вкладывать панели с разными менеджерами и компонентами, чтобы достичь желаемого макета. Прочитайте раздел из руководства по Swing на Layout Manger для получения дополнительной информации.

...