Как создать кнопку и разместить ее на панели на основе пользовательского ввода

В первом кадре у меня есть панель с макетом формы, у меня есть кнопка "ДОБАВИТЬ". Когда пользователь нажимает кнопку ДОБАВИТЬ, отображается второй кадр. Второй кадр показан, чтобы позволить пользователю заполнить информацию, необходимую для создания кнопки в A.java.

Кнопка ДОБАВИТЬ на рамке A.java:

JButton button_3 = new JButton("ADD");//ADD ROW
    button_3.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            addCHECKUP addC = new addCHECKUP();//note that addCHECKUP is B.java
            addC.setVisible(true);
            addC.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        }

    });

кадр A.java:

Если пользователь нажимает кнопку ДОБАВИТЬ в кадре A.java, будет показан кадр B.java.

кадр Б.Ява:

После того, как пользователь закончит вводить все данные в кадре B.java, будет нажата кнопка ДОБАВИТЬ. Затем в кадре A.java создается новая кнопка на основе ввода пользователя в кадре B.java.

До сих пор, когда нажимается кнопка ДОБАВИТЬ в кадре B.java, информация сохраняется в текстовом файле. Ниже приведен код кнопки ДОБАВИТЬ.

JButton btnAdd = new JButton("ADD");
    btnAdd.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            System.out.println(comboBox_1.getSelectedItem());   //getActivity

             if (chckbxNewCheckBox.isSelected()){//if complication
                System.out.println("*"+textField.getText());//setTaskName have * sign
                }
            else{
                System.out.println(textField.getText());    
                }
            System.out.println(comboBox.getSelectedItem());  //getDay

              String filename = "c:" + File.separator + "Text File from B.java Class.txt";
                File f = new File(filename);
                PrintWriter pw = null;
                try {

                    pw = new PrintWriter(f);                
                    pw.println(comboBox_1.getSelectedItem());
                    if (chckbxNewCheckBox.isSelected()){//if complication
                        pw.println("*"+textField.getText());

                        }
                    else{
                        pw.println(textField.getText());

                        }
                    pw.println(comboBox.getSelectedItem());
                    pw.flush();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }finally{

                    if(pw!=null){
                        pw.close();
                    }

            }

            JOptionPane.showMessageDialog(null,"Successfully added !");
        }
    }); 

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

Я хочу создать кнопку следующим образом: я поставил это на B.java

JButton btn_34 = new JButton("Uptitrate BB");//Task Name
BigPanel.add(btn_34, "12, 11");  //12 and 11 is based on Activity and Day

Но ошибка в BigPanel.add

1 ответ

Я хотел бы использовать свойства читать и писать это.

Так что все, что вам нужно, это ключи и ценности.

final Properties prop = new Properties();
prop.setProperty("Activity", comboBox_1.getSelectedItem());
prop.setProperty("Complication", chckbxNewCheckBox.isSelected());
prop.setProperty("Day", comboBox.getSelectedItem());
writePropertyIntoFile("c:" + File.separator + "Text File from B.java   Class.txt", prop);

И ваш метод записи может выглядеть так

private static void writePropertyIntoFile(String file, final Properties prop)
        throws FileNotFoundException, IOException {
    try (final FileOutputStream f = new FileOutputStream(file);) {
        prop.store(f, null);
    }
}

Искренне

Update-1

Я предполагаю, что у меня есть свойство File, содержащее

B1.Day,1
B1.Complication,true
B1.Activity,Diagnose
B2.Day,2
B2.Complication,false
B2.Activity,Labs
B3.Day,5
B3.Complication,false
B3.Activity,Oxygon

Теперь мне нужно только перебрать все B вызовом createButton для каждого, содержащегося в этом файле свойств. Все, что я могу сохранить, это последний использованный индекс. Так что, если пользователь добавляет новый. Мы создаем новую кнопку Bn. Сохраните это в файле, и все готово.

Update-2

JButton button_3 = new JButton("ADD");//ADD ROW
button_3.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {
        String btName = getNextFreeButtonName();
        Button btnX = createNewButton("Oxy", "11","10", btName);
        mapContainingAllButtons.put(btName, btnX)
        addButtonToFram(btnX);
    }
});
Другие вопросы по тегам