Общий вопрос: где хранятся компоненты Java (кнопки, элементы меню и т. Д.), Когда они добавляются к чему-то вроде JFrame, JPanel, JMenu? Когда я просматривал документацию, я увидел, что они хранятся в списке, но я все еще пытаюсь найти конкретную информацию об этой реализации, копаясь в документах Oracle. Может кто-нибудь, кто это понимает, помогает мне понять?Где Java копирует и сохраняет объекты, когда .add'ing их к компоненту Swing?
При перемещении по учебникам Java в Oracle я заметил, что один и тот же идентификатор повторно используется для создания объектов того же типа. Например, это создает две отдельные кнопок:
JPanel buttonPnale = new JPanel("Making some buttons");
JButton buttonMaker;
buttonMaker = new JButton("Left button", blueBurstIcon);
buttonPanel.add(buttonMaker);
buttonMaker = new JButton("Right button", orangeBurstIcon);
buttonPanel.add(buttonMaker);
Обычно я бы подумал, что мне нужно сделать это:
JButton buttonOne = new JButton("Left button", blueBurstIcon);
JButton buttonTwo = new JButton("Right button", orangeBurstIcon);
Созданием отдельного идентификатора, чтобы пойти с каждым отдельным объектом.
Очевидно, объекты в первом фрагменте кода где-то сохраняются, я просто пытаюсь выяснить, где. Должно быть, когда я вызываю .add, что они скопированы - но где они копируются? Если они добавлены в JPanel, они скопированы в структуру данных, содержащую JPanel? Или к структуре данных в части JFrame, к которой добавлена JPanel?
'buttonMaker' - это просто ссылка на' JButton'. Я не уверен, что вы подразумеваете под копией. Внутри 'add()' компоненты сохраняют ссылку, которую они передали. –
Я действительно понимаю, что buttonMaker является идентификатором. Под копией я подразумеваю «установление указателя» - поскольку я предполагаю, что конкретный объект не дублируется, а указатель или ссылка на него бросается в список. Но где этот список? – Azoreo