Как получить доступ к переменным внутри класса, который вызывался более одного раза как вкладка в JTabbedPane (Java) - PullRequest
1 голос
/ 11 июля 2011

Я создаю Java-приложение.

У меня есть один класс q2a2, который является jpanel, конструкция которого показана следующим образом: -img-

enter image description here

Предположим, если элемент выбран из поля со списком и нажата кнопка "Создать учетную запись". Одна вкладка добавлена ​​в jTabbedPane. У каждого элемента есть общая вкладка. поэтому я создал один класс и добавлял его каждый раз при нажатии кнопки. Имя класса - q2a2_add. Это тоже панель. Изображение для этого выглядит следующим образом ...

enter image description here

После трех элементов приложение выглядит как

enter image description here

Код для этого:

public void addclass(int a) {
    if(jTabbedPane1.getTabCount()<13) { //variable name of TabbedPane
    String s=(String) mainCB.getItemAt(a); //mainCB is the variable name of main combobox
    int dont=0;
        for(int j=0;j<tabname.length;j++){ //just to ensure two accounts should not be same
        if(s.equals(tabname[j])){
            dont=1;
            break;
        }
        }
        if(dont==0){         
        for(int j=0;j<12;j++) {
            if(index[j]==0){
                q2a2_add subpanel2=new q2a2_add(this); //calling the second class
                jTabbedPane1.add(s,subpanel2); //here adding panel
                subpanel2.heading(s); // heading() method is defined in q2a2_add() which rename the jTextField to be same as argument s;
                tabname[j]=s;
                index[j]=1;
                break;
            }
        }
        }
        else {
            JOptionPane.showConfirmDialog(null, (String) mainCB.getItemAt(a)+" is already created","Information", JOptionPane.PLAIN_MESSAGE);
        }
}
    else {
            JOptionPane.showConfirmDialog(null, "Account Overload. Delete wrong account and then create","Caution", JOptionPane.PLAIN_MESSAGE);
    }
}

Теперь мой вопрос. Как видно из функции. каждый раз один и тот же класс был вызван и добавлен. Как я могу получить доступ к различным комбинированным спискам и текстовым полям на разных вкладках. Я хочу сохранить и открыть значения, введенные пользователем. Как, например, - как по-разному читать входные данные из Счета к получению, Счета к оплате и Канцелярские товары.

Пожалуйста, ответьте.

1 Ответ

1 голос
/ 11 июля 2011

Я бы раскрыл ту функциональность, которая вам нужна в вашем классе q2a2_add.Например, если вы хотите изменить значение текстового поля, добавьте функцию внутри класса q2a2_add с именем setTextBoxValue(), которая принимает параметр String.Внутри этой функции вы можете установить значение текстового поля.То же самое касается извлечения информации из него.Единственная оставшаяся проблема заключается в том, как отслеживать различные вкладки.Что я бы порекомендовал (что может упростить то, что у вас уже есть), так это создать HashMap, который отображает типы String на типы q2a2_add.Затем, когда вы хотите добавить новую панель вкладок, вы можете просто проверить, существует ли String в HashMap, вместо того, чтобы просматривать заголовки.Если он не существует, вы можете добавить его в HashMap, хранящийся внутри вашего внешнего JPanel класса.Затем, когда вы захотите получить доступ к панелям вкладок, вы можете просто получить к ним доступ в виде строки внутри HashMap и получить / установить их свойства по своему усмотрению.

...