#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
поддерживается концептуальный макет документа. Примеры можно найти в разделе «Как использовать панели редактора и текстовые панели«. Дополнительные примеры можно найти здесь.