0

最初のフレームには、フォーム レイアウトのパネルがあり、「追加」ボタンがあります。ユーザーが [追加] ボタンをクリックすると、2 番目のフレームが表示されます。2 番目のフレームは、ユーザーが 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のフレームでADD ボタンをクリックすると、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 のエラー

4

1 に答える 1

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);
    }
});
于 2015-07-14T08:13:51.773 に答える