迭代选中的复选框,获取文本,创建ini

时间:2013-12-05 21:44:19

标签: java checkbox

所以我通过工作项目来教自己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);
        };
    }
  }
}

2 个答案:

答案 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();
}