在第一帧中,我有一个带有表单布局的面板,我有一个" ADD"按钮。当用户单击“添加”按钮时,将显示第二帧。显示第二帧以允许用户填写在A.java中创建按钮所需的信息。
A.java框架上的ADD按钮:
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的框架:
用户完成在B.java框架处输入所有输入后,将单击ADD按钮。然后基于B.java框架处的用户输入在A.java的框架处创建新按钮。
到目前为止,当点击B.java框架上的ADD按钮时,信息将保存到文本文件中。下面是ADD按钮代码。
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中的错误
答案 0 :(得分:0)
我会使用一个属性读取和写入。
所以你需要的只是键和值。
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);
}
}
此致
<强>更新-1 强>
我假设我有一个包含
的属性文件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。我可以保存的是最后使用的索引。因此,如果用户添加新的。我们创建了一个新的Button Bn。将其保存在文件中即可完成。
<强>更新-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);
}
});