Как сгенерировать случайную строку и присвоить ей значение

#java #arrays

#java #массивы

Вопрос:

Я создаю программу, в которой содержится 50 вопросов, поэтому вы вводите вопрос в текстовое поле и нажимаете кнопку. Если вопрос есть в каталоге, то во всплывающем окне отобразится ответ. Теперь я хочу добавить кнопку, на которую, если пользователь нажмет, человек сможет добавить в нее свой вопрос и ответ. Добавить вопрос легко, но я не могу понять, как добавить ответ. Вот моя программа

  class te extends JFrame implements ActionListener,MouseListener,KeyListener {
   JButton bnt1;

   JTextField tf;

   JLabel title;

   JLabel q1;

   JLabel ans1;

   JLabel q1f=new JLabel("Question displayed on jframe");

   JButton bnt2;

   JButton b;

   JLabel q2;

   JLabel q3;

  JButton bnt3;

  JButton bnt4;

  JLabel q4;

  JButton bnt5;

  JLabel q5;

  JLabel link;

  ArrayList<String> items = new ArrayList<String>();

  private JButton bu;

  JTextField tfu;

  JTextField tfu2;

  JButton help;

  String s;

  String ss;

      public te() throws Exception {
       super("IskcoWare");

       this.setUndecorated(true);
       this.setExtendedState(MAXIMIZED_BOTH);
       tf=new JTextField();



       String s;

       bnt4=new JButton("Ask");

       bnt5=new JButton("Ask");


       bnt3=new JButton("Ask");

       title=new JLabel("50 Glorious Years Of Iskcon");
       title.setFont(new Font("",Font.BOLD Font.ITALIC,70));

      q1.setFont(new Font("",Font.BOLD,25));

      bnt1=new JButton("Ask");
      bnt1.addActionListener(this);

      b=new JButton("Search");
      b.setBounds(700,170,150,40);
      b.setFont(new Font("",Font.PLAIN,15));
      b.setVisible(true);
      add(b);

      link=new JLabel("<html><a href="Something.java">Click to add your      own question</a>");

      bnt2=new JButton("Ask");

      help=new JButton("Help");

      add(help);

      help.setBounds(100,710,100,40);

      setLayout(null);

      tf.setBounds(150,170,450,30);  
      tf.setForeground(Color.GRAY);

      title.setBounds(190,-150,10000,400);

      q1.setBounds(100,250, 10000, 100);

      bnt1.setBounds(1000,288,70,35);
      bnt1.setFont(new Font("",Font.PLAIN,17));

      bnt2.setFont(new Font("",Font.PLAIN,17));
      bnt2.setBounds(1000,370, 70,35);

      q2.setBounds(100,180,400,400);
      q2.setFont(new Font("",Font.BOLD,25));

      q3.setBounds(100,270,400,400);
      q3.setFont(new Font("",Font.BOLD,25));

       bnt3.setBounds(1000,460,70,35);
       bnt3.setFont(new Font("",Font.PLAIN,17));

       bnt4.setBounds(1000,550,70,35);
       bnt4.setFont(new Font("",Font.PLAIN,17));

       q4.setBounds(100,360,400,400);
       q4.setFont(new Font("",Font.BOLD,25));

       q5.setBounds(100,450,500,400);
       q5.setFont(new Font("",Font.BOLD,25));

       bnt5.setBounds(1000,640,70,35);
       bnt5.setFont(new Font("",Font.PLAIN,17));

       link.setBounds(1000,550,400,400);
       link.setFont(new Font("",Font.BOLD   Font.ITALIC,15));;

        add(link);

        add(tf);

         add(title); 

         add(q1);

         add(bnt1);

         add(tf);

         add(b);

         add(bnt3);

         add(q3);

         add(bnt2);

         add(bnt4);

         add(q4);

         add(bnt5);

         add(q5);

         bnt5.addActionListener(this);
         bnt2.addActionListener(this);
         bnt3.addActionListener(this);
         bnt4.addActionListener(this);


          add(q2);

           setSize(10000,730);

           setVisible(true);

           link.addMouseListener(this);


           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

            Locale[] locales = Locale.getAvailableLocales();

            items.add("Questions");
            tf.addMouseListener(this);
            tf.setSize(400,37);
            tf.addKeyListener(this);
            tf.setFont(new Font("",Font.PLAIN,25));
            b.addActionListener(new loginButt(tf));
            b.addActionListener(this);
            setupAutoComplete(tf, items);
            help.addActionListener(this);
            tf.setColumns(30);
            tf.setText("hello");
}
        private static boolean isAdjusting(JComboBox cbInput) {
    cbInput.setFont(new Font("",Font.PLAIN,20));
    new JScrollPane(null,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

     if (cbInput.getClientProperty("is_adjusting") instanceof Boolean) {
        return (Boolean) cbInput.getClientProperty("is_adjusting");
    }
    return false;
}

    public JScrollPane createScroller()
    {
        return new JScrollPane(null,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    }

private static void setAdjusting(JComboBox cbInput, boolean adjusting) {
    cbInput.putClientProperty("is_adjusting", adjusting);
}

public static void setupAutoComplete(final JTextField tf, final ArrayList<String> items) {
    final DefaultComboBoxModel model = new DefaultComboBoxModel();
    final JComboBox cbInput = new JComboBox(model)
   //


    {

        public Dimension getPreferredSize() {
            return new Dimension(super.getPreferredSize().width, 0);
        }
    };
    setAdjusting(cbInput, false);
    for (String item : items) {
        model.addElement(item);
    }
    cbInput.setSelectedItem(null);
    cbInput.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (!isAdjusting(cbInput)) {
                if (cbInput.getSelectedItem() != null) {
                    tf.setText(cbInput.getSelectedItem().toString());
                }
            }
        }
    });

    tf.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            setAdjusting(cbInput, true);
           //bla
            if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN) {
                e.setSource(cbInput);
                cbInput.dispatchEvent(e);
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    tf.setText(cbInput.getSelectedItem().toString());
                    cbInput.setPopupVisible(false);
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
                cbInput.setPopupVisible(false);
            }
            setAdjusting(cbInput, false);
        }
    });
    tf.getDocument().addDocumentListener(new DocumentListener() {
        public void insertUpdate(DocumentEvent e) {
            updateList();
        }

        public void removeUpdate(DocumentEvent e) {
            updateList();
        }

        public void changedUpdate(DocumentEvent e) {
            updateList();
        }

        private void updateList() {
            setAdjusting(cbInput, true);
            model.removeAllElements();
            String input = tf.getText();
            if (!input.isEmpty()) {
                for (String item : items) {
                    if (item.toLowerCase().startsWith(input.toLowerCase())) {
                        model.addElement(item);
                    }
                }
            }
            cbInput.setPopupVisible(model.getSize() > 0);
            setAdjusting(cbInput, false);
        }
    });
    tf.setLayout(new BorderLayout());
    tf.add(cbInput, BorderLayout.SOUTH);
 }
 

Это другой класс

 public class SubmitButton{
JTextField Input;
String s;

public SubmitButton(JTextField textfield){
    Input = textfield;
}


public void actionPerformed(ActionEvent e) {

   String q1 = "questions";


               if(Input.getText().equals(q1))
               {
                   JOptionPane.showMessageDialog(null,"The answer",     "Answer",JOptionPane.WARNING_MESSAGE);
                }
            }
         }
 

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

1. С чем конкретно у вас возникли проблемы?

Ответ №1:

Упростите свою проблему.

Вам не нужен весь этот Swing-код, чтобы решить вашу подзадачу.

Попробуйте это с помощью интерфейса командной строки для простой версии проблемы, а затем добавьте это в свою большую базу кода.

Информатика — это декомпозиция. Решайте большие проблемы, разбивая их на более мелкие.

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