Как создать кнопку и разместить ее на панели на основе пользовательского ввода
В первом кадре у меня есть панель с макетом формы, у меня есть кнопка "ДОБАВИТЬ". Когда пользователь нажимает кнопку ДОБАВИТЬ, отображается второй кадр. Второй кадр показан, чтобы позволить пользователю заполнить информацию, необходимую для создания кнопки в 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);
}
});