Объединение FlowLayout / GridLayout?

#java #swing #jbutton #grid-layout #flowlayout

#java #качать #jbutton #сетка-макет #потоковое описание

Вопрос:

Хорошо, я пытаюсь создать программу, которая принимает System.in из сканера помещает входные данные в строку, затем создает макет кнопки на основе входных данных. Я довольно новичок в Java и в некоторой степени самоучка, поэтому, если это выглядит странно, это потому, что я не профессионал:

 else if(wordReader.endsWith("r")){

//Create grid layout (one below other)
GridLayout buttonReturn = new GridLayout(0,i);
contentPane.setLayout(buttonReturn);
System.out.println("This has a new line value");
i  ;

    wordReader.replaceAll("r","");
    buttonVal = new JButton (wordReader);
    buttonVal.addActionListener(new ButtonListener());
    buttonVal.setEnabled(true);

    contentPane.add(buttonVal, BorderLayout.NORTH);
Border emptyBorder = BorderFactory.createEmptyBorder();
buttonVal.setBorder(emptyBorder);
}

else {

    //Create button layout(side by side)
    FlowLayout buttonLayout = new FlowLayout();
    contentPane.setLayout(buttonLayout);
    contentPane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

    buttonVal = new JButton (wordReader);
    buttonVal.addActionListener(new ButtonListener());
    buttonVal.setEnabled(true);
    contentPane.add(buttonVal, BorderLayout.NORTH);
    Border emptyBorder = BorderFactory.createEmptyBorder();
    buttonVal.setBorder(emptyBorder);
}
 

Мои вопросы:
Что я хочу сделать, это создать кнопку для каждого слова, но отображать эти кнопки в формате, аналогичном бумажному формату. То есть, когда человек нажимает кнопку возврата каретки, мне больше не нужно потоковое описание (рядом), но теперь я хочу переместить следующую кнопку с возвратом каретки ниже предыдущих кнопок. Возможно ли это? Я пытался перейти от FlowLayout к GridLayout, чтобы переместить следующую кнопку ниже, но, прочитав, я даже не уверен, что это возможно. Есть ли способ сделать это?

Есть ли способ обнаружить кнопку возврата каретки без выполнения в консоли, прямо сейчас я заставляю их вводить r в качестве возврата каретки в их ввод вместо нажатия enter?

Я просмотрел множество инструкций, статей, форумов и сообщений с вопросами и ответами (в том числе на этом сайте), но, похоже, не могу найти ничего, что позволило бы мне делать то, что я хочу. Позже я буду делать это для чтения из файла вместо System.in , так что, если это будет легче объяснить, тогда не стесняйтесь примерить это 🙂 Опять же, я довольно новичок в этом, и у меня мало формальной подготовки, так что я был бы признателен за смягчение жаргона. Большое всем спасибо.

Комментарии:

1. «… пытаюсь создать программу, которая требует System.in из сканера помещает входные данные в строку, затем создает макет кнопки на основе входных данных ..» Разве не имело бы больше смысла брать входные данные из элементов управления GUI или D amp; D и т. Д.? Создание графического интерфейса пользователя из команд в командной строке кажется немного странным, если только я вас не неправильно понял.

Ответ №1:

Вы можете посмотреть JTextPane , который поддерживает встроенные компоненты. Вместо буквального потока или макета сетки StyledDocument поддерживается концептуальный макет документа. Примеры можно найти в разделе «Как использовать панели редактора и текстовые панели«. Дополнительные примеры можно найти здесь.