GUI Java-как использовать 2 введенных пользователем числа, чтобы получить ответ - PullRequest
0 голосов
/ 11 ноября 2011

Я пытаюсь построить процентную программу, которая находит процент одного числа из другого.Я хочу взять два введенных пользователем числа, чтобы jtextfield нажало кнопку j, и чтобы ответ отображался в другом jtextfield, указанном как результат.Любая идея, как это сделать, я знаю, что нужен слушатель действия, но я не знаю, куда идти дальше.Вот что у меня есть, я могу распечатать то, что хочу, просто не знаю, как заставить работать actionlistener.

package GUI;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


@SuppressWarnings("serial")
public class WeightGUI  extends JFrame{
private JLabel label1;
private JTextField field1;
private JLabel label2;
private JTextField field2;
private JLabel label3;
private JTextField field3;
private JLabel label4;
private JTextField field4;
private JButton button1;
private JButton button2;
private JButton button3;
public WeightGUI () {
    super( "Percentage Weight Loss Calculator");
    setLayout( new FlowLayout() );

    label1 = new JLabel ("Starting Weight ");
    field1 = new JTextField ("Type");
    label2 = new JLabel ("Last Week Weight");
    field2 = new JTextField ("Type");
    label3 = new JLabel ("Current Weight");
    field3 = new JTextField ("Type");
    label4 = new JLabel ("Percentage Lost");
    field4 = new JTextField ("Results");
    button1 = new JButton (" Calculate Percent Total");
    button2 = new JButton (" Calculate Percent Week");
    button3 = new JButton (" Calculate Percent from last weight");
    label1 = new JLabel( "Starting Weight");
    add(label1);

    field1 = new JTextField("Type");
    add (field1);

    label2 = new JLabel( "Last Week Weight");
    add(label2);

    field3 = new JTextField(10);
    add (field2);

    label3 = new JLabel( "Current Weight");
    add(label3);

    field3 = new JTextField("Type");
    add (field3);

    label4 = new JLabel( "Percentage Lost");
    add( label4 );

    field4 = new JTextField("Results");
    field4.setEditable(false);
    add (field4);

    button1 = new JButton ("Calculate Total Percent");
    add( button1 );

    button2 = new JButton ("Calculate Percent from last Weight");
    add( button2 );

    button3 = new JButton ("Calculate Weekly Percent");
    add( button3 );

    thehandler handler = new thehandler();
    button1.addActionListener(handler);

    thehandler handler1 = new thehandler();
    button2.addActionListener(handler1);

    thehandler handler2 = new thehandler();
    button3.addActionListener(handler2);
}

private class thehandler implements ActionListener {

    public void actionPerformed (ActionEvent e){

        int sw;
        int lw;
        int cw;
        double weight = 0 ;
        String inputString;
        inputString = field1.getText();
        inputString = field2.getText();
        inputString = field3.getText();
        sw = Integer.parseInt(inputString);
        lw = Integer.parseInt(inputString);
        cw = Integer.parseInt(inputString);
            if(e.getSource() == button1) {
                weight = (sw - cw) / sw;
            }
            else if(e.getSource() == button2) {
                weight = (lw - cw) / sw;
            }
            else if(e.getSource() == button3){
                weight = (lw - cw)/ lw;



    }



    }
}


}

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Основная проблема с вашим кодом состоит в том, что вы не устанавливаете текст JTextField, который содержит результат.Это можно сделать, просто вызвав setText(...) для этого JTextField и передав строку, которая представляет результаты.Вы также захотите удалить бессмысленный текст «Тип» в ваших JTextFields, так как они могут испортить ситуацию, если вы не хотите добавить FocusListener во все текстовые поля, чтобы в focusGained он выбрал все содержимое поля.

Вы также захотите переименовать свои переменные, как отмечено в моих комментариях выше.

0 голосов
/ 11 ноября 2011

Вы должны установить результаты в соответствующих полях, используя метод setText ().Но у меня есть к вам вопрос: вы сказали, что два пользователя устанавливают свои входы одновременно, я имею в виду, ваше приложение распространяется?другими словами, пользователи находятся в сети и используют ее!?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...