Как добавить «Добавить текст» в JFrame - PullRequest
0 голосов
/ 10 октября 2019

У меня проблемы с получением ресурсов, которые помогут мне с проблемой. Я хочу добавить кнопку, которая позволит мне вставить текст в любое место моего JFrame, чтобы я мог щелкнуть и добавить текст

До этого я использовал JTextField и JTextArea, но этополезно в предопределенном пространстве (я полагаю).

То, что я хочу, это как классическая кнопка «Добавить текст» в Paint (кнопка «A»), в которой при нажатии на нее у вас будет текстовый курсор (например,«Я»), а затем нажмите где-нибудь в рамке, чтобы я мог добавить текст в этой области. Который я называю «добавление текста динамически». К сожалению, у меня нет кода для показа, потому что я не уверен, как создать код с нуля или, возможно, использовать метод в Swing, но я более чем хочу объяснить лучше, если это слишком универсально для вас, ребята.

1 Ответ

1 голос
/ 10 октября 2019

Вам нужно быть знакомым с графикой Java и связанными с ней методами, в частности drawString(), поэтому начните с чтения официального Учебника графики .

Затем узнайте о MouseListeners , который поможет вам узнать, когда и где пользователь нажимает в вашем JFrame.

Затем узнайте о KeyListeners , который позволит вам определить, когда ваш пользовательтипирование. Вы можете вместо этого использовать связывание клавиш , но, как описано, ваш пользовательский интерфейс относительно прост с одним фокусируемым компонентом, поэтому списки ключей, вероятно, в порядке.

Эта общая стратегия должна помочь вам принятьмгновенный скачок в проблеме:

  1. обнаружение щелчка мышью с помощью мышиного прослушивателя

  2. рисование вставки

  3. обнаружение нажатия клавиш с помощью клавишного регистратора

  4. использовать graphics.drawstring для рисования символа, указанного при нажатии клавиши

  5. перерисовать строку ввода

Убедитесь, что ваш обработчик ключей обрабатывает клавишу ввода, чтобы вы знали, когда стирать панель ввода. Вы собираетесь paint ваш JFrame между каждым из этих шагов.

Результат будет, по меньшей мере, грубым, и вы заметите, что вам нужно справитьсямножество вопросов, которые возникают по пути, прежде чем вещи начинают выглядеть профессионально. Например, вам придется иметь дело с метриками шрифта . Не каждый символ будет иметь одинаковую ширину, поэтому вам нужно вычислить аргумент X для вашего drawString() на основе charWidth любого символа, который пользователь вводит. По этой причине вы можете начать с моноширинного шрифта.

...