所以我通过工作项目来教自己Java(我自己启动了项目)。我已经有很多程序正在运行,多亏了这个网站的精彩用户。
我的问题: 我有简单的GUI,可以选择多个复选框。用户将选择一个或多个,然后单击启动代码的按钮,该代码将构建另一个程序所需的ini文件。到目前为止,我可以遍历每个复选框并获取已检查的名称。基本上,现在,我知道下面的代码是错误的,因为它使用if和else if语句,它们只是相互覆盖。
基本上,我希望用户能够选择GUI上的任何复选框,并让此类检查哪些是检查,为每个选择分配实际网络路径值并将它们附加在一起。根据我已经阅读的内容,我认为我需要使用案例陈述来完成此操作。
编辑:问题是,如何迭代每个选中的复选框,抓取文本,将文本字符串转换为多个选择的组合字符串
if (strRaw.equals("Site1")){
strRef = "source=NetworkPath1,";
}
else if (strRaw.equals("Site2")){
strRef = "source=NetworkPath2";
}
else if (strRaw.equal("Site3")){
strRef = "source=NetworkPath3";
}
实施例 选中Checkbox1
未选中Checkbox2
选中Checkbox3
Checkbox1.text = Something
Checkbox3.text =另一件事
输出字符串=东西,另一件事
任何帮助都会受到赞赏,就像我说我还在学习Java一样。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
public class MyActionListener implements ActionListener {
private final List<JCheckBox> checkBoxes = new LinkedList<JCheckBox>();
public void addCheckBox(JCheckBox checkBox) {
this.checkBoxes.add(checkBox);
}
public void actionPerformed(ActionEvent evt) {
// Iterate over each JCheckBox
for (JCheckBox checkBox : checkBoxes) {
if (checkBox.isSelected()) {
String strRaw = new String(checkBox.getText());
String strRef = new String();
try {
PrintWriter writer = new PrintWriter("C:\\Control\\test1.ini", "UTF-8");
writer.println("[TifSource]");
if (strRaw.equals("Site1")){
strRef = "source=NetworkPath1,";
}
else if (strRaw.equals("Site2")){
strRef = "source=NetworkPath2";
}
else if (strRaw.equal("Site3")){
strRef = "source=NetworkPath3";
}
writer.println(strRef + "\n");
writer.println("[Division]");
writer.println("division=divisionarea\n");
writer.println("[Area]");
writer.println("area=6\n");
writer.println("[TifIndex]");
writer.println("Updated=0");
writer.println("Version=81008");
writer.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, strRef);
};
}
}
}
答案 0 :(得分:0)
对你想要的东西感到困惑。您可以创建一个String,并附加到它,然后将其写入该文件?这对你有用吗?再说一次,我有点困惑你需要什么。
String x;
x += "\nSome Text"; // \n is a new line
x += "Other stuff";
writer.println(x);
这对你有用吗?
答案 1 :(得分:0)
你可以这样做。使用StringBuilder并在每次迭代时附加到它
StringBuilder sb = new StringBuilder();
for (JCheckBox checkBox : checkBoxes) {
if (checkBox.isSelected()) {
String strRaw = new String(checkBox.getText());
String strRef = new String();
sb.append("[TifSource]");
if (strRaw.equals("Site1")){
sb.append("source=NetworkPath1, ");
}
else if (strRaw.equals("Site2")){
sb.append("source=NetworkPath2, ");
}
else if (strRaw.equal("Site3")){
sb.append("source=NetworkPath3, ");
}
sb.append(strRef + "\n");
sb.append("[Division]");
sb.append("division=divisionarea\n");
sb.append("[Area]");
sb.append("area=6\n");
sb.append("[TifIndex]");
sb.append("Updated=0");
sb.append("Version=81008");
}
}
try {
PrintWriter writer = new PrintWriter("C:\\Control\\test1.ini", "UTF-8");
writer.println(sb.toString());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}