2015-09-01 32 views
0

我有一个包含类似文本文件:构造按钮

parameter 1 = true  
parameter 2 = true  
parameter 3 = false 

,这正好为90的参数。我正在创建一个程序,该程序将从该文件中读取并创建具有不同状态的按钮,具体取决于参数设置为true还是false,以及这些状态之间的交替。

我的问题是:为了使这个按钮,有没有办法创建一个构造函数来调用,可以为我创建按钮还是我必须复制和粘贴一切,一次一个?由于我对编程比较陌生,所以我一直在寻找几天,但我从未做到过。 PS:我不需要按钮状态的代码,我只需要知道是否有更简单的方法,如果有,我该怎么做。

+2

'“为了使这个按钮,有没有一种方法来创建一个构造函数被调用,可以创建一个按钮我还是必须一次一个地复制和粘贴所有内容?“ - 不知道你在这里问什么,但聪明编程的关键是保持简单并避免重复自己。也许你应该开始编码,看看你能想出什么,因为我有一种感觉,一旦你弄湿了手,你就会更好地理解你必须处理的真正问题。 –

+0

您可能想要使用循环。 –

回答

1

假设您不需要文本文件(参数1等)中的名称,一种可能的解决方案是尝试浏览文本文件并将每个值保存为布尔数组。然后,你可以做这样的事情:

List<MyButton> buttons = new ArrayList<MyButton>(); 
for (int i = 0; i < buttonValues.length; i++) { //buttonValues is the array of booleans 
    buttons.add(new MyButton(buttonValues[i]); 
} 

MyButton是一个类你做,有一个构造函数一个布尔值,以表明其状态。

您甚至不需要将值保存到数组中,您可以直接跳到在读取文件时制作按钮。您可以将其更改为while循环,条件沿着myFileReader.hasNext()的行,并在读取构造函数时传递布尔值。如果你想跟踪它,你也可以在这里轻松读取参数的名称。只需更新MyButton的构造函数即可。

0

您可以逐行读取并创建运行时按钮的每一行:

public Frame() throws FileNotFoundException, IOException { 
    try (BufferedReader br = new BufferedReader(new FileReader("1.txt"))) { 
     String line; 
     while ((line = br.readLine()) != null) { 
      // read line by line 
      String[] paramAndValue = new String[2]; 
      // split key/value 
      paramAndValue = line.split(" = "); 
      // add a Jbutton with the key as name 
      JButton button = new JButton(paramAndValue[0]); 
      // and the value as the state 
      button.setEnabled(Boolean.parseBoolean(paramAndValue[1])); 
      this.add(button); 
     } 
    } 
}