Простой калькулятор Java

#java #swing

#java #swing

Вопрос:

Я создал базовый калькулятор, используя Java Swing. У меня вопрос в том, как печатать каждое вычисление на панели. например, я добавил два числа, моя панель должна выглядеть примерно как 2 4 = 6, и если я выполняю другую операцию, она должна добавить другую операцию на панель.

Моя идея: Я знаю, что могу работать с метками и изменять значение меток, но это не очень хорошая идея, поскольку по мере увеличения объема операций я не могу продолжать добавлять метки, я считаю, что должен быть способ, но поскольку я изучаю Swing, мне нужна помощь экспертов.

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

1. Я не понимаю вопроса. Что вы подразумеваете под «по мере увеличения объема операций я не могу продолжать добавлять метки»?

2. это не сайт «дайте мне код», вам нужно показать свою работу, объяснить, что не работает, и задать конкретные вопросы… или ваш вопрос будет закрыт.

3. @Charlesworth: Я имею в виду, что у меня есть несколько операций, таких как 2 3=5, 2/2=1,3-4=-1 и т.д., я напечатал все эти операции на jpanel, а не только одну недавнюю операцию. Я могу работать с метками, присваивая им значения, но мне нужны все операции, которые я выполнил, скажем, 100. У меня возник вопрос, как мне динамически добавлять эти операции на свою панель.

4. @Roberson: Пожалуйста, не будь со мной таким грубым. Я не прошу экспертов писать код за меня, мне нужна подсказка или предложение, чтобы я мог отслеживать все операции, которые я выполнил.

5. Поскольку вам требуется до 100 операций, вам нужно сохранить их в какой-либо структуре данных, такой как список, но их отображение может быть проблемой. Использование JTextArea, как я упоминал в ответе, возможно, если вы поместите его в JScrollPane, чтобы пользователь мог прокручивать операции.

Ответ №1:

Есть две возможности:

  1. Используйте JTextArea и сделайте его недоступным для редактирования. Элемент управления текстовой областью позволит вам добавлять несколько строк текста, чтобы вы могли продолжать добавлять операции по своему усмотрению.

    textArea.setEditable(ложь);

  2. Нарисуйте текст в виде графики на холсте. Это немного сложнее, но у вас больше контроля над тем, как выглядит текст и как он форматируется.

    g.drawString(«a b = c», x, y);

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

1. Важное, не упомянутое преимущество опции JTextArea — пользователь сможет легко копировать / вставлять результаты

2. Добавление к текстовому полю работает как по волшебству :). Большое вам спасибо

Ответ №2:

Либо создайте одну JLabel и вместо добавления новых и отображения их, вы можете получить текст с помощью getText () на JLabel, затем добавьте текст, который вы хотите добавить, и, наконец, используйте setText (), отправляя свой новый и полный текст, чтобы в одной JLabel был весь текст. ИЛИ вы могли бы создать JPanel или JComponent (что-то, на чем вы можете рисовать с помощью paintComponent (Graphics g) и использовать g.drawString(), который принимает строку для рисования (которая будет вашим полным добавленным текстом) и местоположение x, y для рисования, например g.drawString(«2 6 = 8», 100, 120); и вам пришлось бы вызвать repaint () в компоненте, чтобы обновить текст. убедитесь, что вы можете сохранить строку где-нибудь, к чему компонент может получить доступ во время рисования.

Я надеюсь, что это поможет.

Ответ №3:

Панель, скорее всего, будет считывать данные из строки. Попробуйте использовать StringBuilder или StringBuffer для добавления к строке при вводе входных данных.

Таким образом, вы также можете изменить / удалить последнее значение » = 6″ и добавить другое » 6 = 10″, если решите добавить больше операций. Затем используйте toString(), когда вы хотите обновить конечный результат на панели, не создавая полностью новую строку.