Как рассчитать выпадающий список с переключателем и получить результаты в пустое текстовое поле? - PullRequest
0 голосов
/ 29 июня 2011

То, что я пытаюсь сделать, это позволить пользователю выбрать опцию из выпадающего меню, а затем выбрать переключатель и затем вычислить их результаты, чтобы они отображались в текстовом поле, или я предполагаю новую панель. Я не хочу весь код, потому что я пытаюсь изучать Java сам, но любые советы, подсказки или примеры кода были бы хороши. По сути, если они выбирают первый вариант в раскрывающемся списке и переключатель, результат должен возвращать «НИЗКИЙ», я пытался использовать NetBeans, поэтому, думаю, я больше запутываюсь. Мне интересно, могу ли я сохранить выпадающие переменные как символ, например, A-E и переключатели, как 1-5, а затем в кнопке вычисления сделать оператор if или что-то еще? Как мне объявить текстовое поле или панель, чтобы результаты отображались там? Так как a * 1 = 'low' b * 2 = 'low' e * 5 = 'high'

Раскрывающееся меню представляет вероятность возникновения риска, а переключатели представляют последствия риска. Эти два умножаются вместе, чтобы определить риск под рукой. Программа - это то, что я сделал на PHP, но я пытаюсь превратить ее в Java-программу, поскольку я пытаюсь изучать Java.

Вероятность возникновения риска имеет вероятность. С удаленной вероятностью вероятность составляет .1, .3, .5, .7 и .9 шанс для варианта «Почти наверняка». Следствие содержит стоимость стоимости. Если минимальное воздействие или его отсутствие не имеет стоимости, вторая кнопка содержит значение стоимости <5, 5-7%, 7-10% и> 10% для последней кнопки (Невозможно достичь ключевого этапа. Это было легко сделать в PHP, как я мог просто создать базу данных, которая содержит эти значения, а затем отправить запрос, когда были выбраны два варианта. Было бы проще просто дать им числовые значения для умножения двух?

Причиной двух разных сборов данных было то, что я пытался сделать интерфейс чистым. Веб-сайт размещен по адресу timesdomain.com, если вы захотите взглянуть на то, как эта функция работает на веб-основе. Вам придется зарегистрироваться, но он не имеет значения, так как он скоро будет удален. Не беспокойтесь о том, что ваш пароль взяли, потому что он хранится в 40-битном хеш-коде с 4-значной солью, поэтому у меня нет возможности узнать его;). У меня есть большая часть моего опыта программирования в базах данных и PHP, поэтому весь язык Java все еще новый. Я хотел бы сделать свою программу, которую я сделал, веб-ориентированной на приложение. Я надеюсь, что это имеет больше смысла.

Вот мой код.

package riskcalculator;

public class Gui extends javax.swing.JFrame {

    /** Creates new form Gui */
    public Gui() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        Consequence = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox();
        jRadioButton1 = new javax.swing.JRadioButton();
        jRadioButton2 = new javax.swing.JRadioButton();
        jRadioButton3 = new javax.swing.JRadioButton();
        jRadioButton4 = new javax.swing.JRadioButton();
        jRadioButton5 = new javax.swing.JRadioButton();
        jButton1 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        jLabel1.setFont(new java.awt.Font("Arial", 0, 24)); // NOI18N
        jLabel1.setText("Risk Claculator");

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Choose a Liklihood", "Remote Chance", "Unlikely Chance", "Likely Chance", "Highly Likely Chance", "Near Certainty Chance" }));

        Consequence.add(jRadioButton1);
        jRadioButton1.setText("Minimal or no impact");

        Consequence.add(jRadioButton2);
        jRadioButton2.setText("Additional resources required, able to satisfy");

        Consequence.add(jRadioButton3);
        jRadioButton3.setSelected(true);
        jRadioButton3.setText("Minor slip in key milestones; not able to meet need date");

        Consequence.add(jRadioButton4);
        jRadioButton4.setText("Major slip in key milestones or critical path impacted");

        Consequence.add(jRadioButton5);
        jRadioButton5.setText("Can't achieve key milestone");

        jButton1.setText("Calculate Risk");
        jButton1.setActionCommand("Calculate Risk");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jPanel2.setBorder(new javax.swing.border.MatteBorder(null));

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 186, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 70, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(26, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jRadioButton1)
                    .addComponent(jRadioButton2)
                    .addComponent(jRadioButton3)
                    .addComponent(jRadioButton4)
                    .addComponent(jRadioButton5))
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(99, 99, 99)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(110, Short.MAX_VALUE))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(69, 69, 69)
                .addComponent(jLabel1)
                .addGap(92, 92, 92))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(55, 55, 55)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(80, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(29, 29, 29)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(26, 26, 26)
                .addComponent(jRadioButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton5)
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addGap(29, 29, 29))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Gui().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.ButtonGroup Consequence;
    private javax.swing.JButton jButton1;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JRadioButton jRadioButton3;
    private javax.swing.JRadioButton jRadioButton4;
    private javax.swing.JRadioButton jRadioButton5;
    // End of variables declaration
}

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Для вашей текущей проблемы проблема в двух словах заключается в том, как получить выбранный элемент из JComboBox и коллекции JRadioButton при нажатии JButton.То, что вы делаете с этой информацией, зависит от логики вашей программы и здесь не является проблемой.Чтобы научиться делать это, я предлагаю вам перейти к учебникам Swing для получения подробной информации.Вкратце, выбор из JComboBox получается простым вызовом getSelectedItem в поле со списком.Для коллекции JRadioButton это немного сложнее, но мне всегда нравилось получать выбор из ButtonGroup, которая объединяет JRadioButtons.Методы для этого и для поля со списком показаны в следующем примере:

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

import javax.swing.*;

public class GetInfoFromCombosRadios extends JPanel {
   private static final String[] STUFF_A = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
   private static final String[] STUFF_B = {"Fe", "Fi", "Fo", "Fum"};
   private JComboBox comboStuffA = new JComboBox(STUFF_A);
   private ButtonGroup btnGroupStuffB = new ButtonGroup();

   public GetInfoFromCombosRadios() {
      JPanel radioPanel = new JPanel(new GridLayout(0, 1, 0, 5));
      for (String stuffB : STUFF_B) {
         JRadioButton radioBtn = new JRadioButton(stuffB);
         radioBtn.setActionCommand(stuffB);
         btnGroupStuffB.add(radioBtn);
         radioPanel.add(radioBtn);
      }

      JPanel comboPanel = new JPanel();
      comboPanel.add(comboStuffA);

      JButton doItBtn = new JButton("Do It!");
      doItBtn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent arg0) {
            doItActionPerformed();
         }
      });
      JPanel doItBtnPanel = new JPanel();
      doItBtnPanel.add(doItBtn);

      setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
      add(comboPanel);
      add(radioPanel);
      add(doItBtnPanel);
   }

   private void doItActionPerformed() {
      String comboSelection = comboStuffA.getSelectedItem().toString();
      System.out.println("Combo Selection: " + comboSelection);

      String radioSelection = "";
      ButtonModel selectedBtnModel = btnGroupStuffB.getSelection();
      if (selectedBtnModel == null) {
         radioSelection = "No radio button selected yet";
      } else {
         radioSelection = selectedBtnModel.getActionCommand();
      }
      System.out.println("Radio selection: " + radioSelection);
   }

   private static void createAndShowUI() {
      JFrame frame = new JFrame("GetInfoFromCombosRadios");
      frame.getContentPane().add(new GetInfoFromCombosRadios());
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
         public void run() {
            createAndShowUI();
         }
      });
   }
}
1 голос
/ 29 июня 2011

При сканировании кода создается впечатление, что компоненты инициализированы и размещены в контейнере.

Чтобы сделать интерфейс интерактивным, вам нужно взглянуть на другую большую часть JavaИнтерфейсы Swing, прослушиватели событий.

По сути, все, что вы делаете (щелчки, изменения значений, перемещение мыши, нажатие клавиш и т. Д.), Генерирует событие.Затем вы пишете прослушиватели событий, которые реагируют на эти события.

Ознакомьтесь с этим вступлением к теме .

...