Я не понимаю особенность внутреннего класса Chameleon. Я не понимаю, что означает линия 8.Внутренний класс Мгновенное уточнение
Я думаю, что это означает создание дублирующей версии JFrame, доступ к которой будет осуществляться вне внутреннего класса, чтобы манипулировать предполагаемым объектом JFrame.
Редактировать: Код содержит ошибку исключения нулевого указателя, поскольку объект JFrame никогда не ссылается. Решение: изменить рамку JFrame на конечную рамку JFrame.
Это поднимает вопрос о том, что, если было несколько JFrames?
Например, если бы у меня был классный сад с различными овощами, и я создал внутренний класс цветов, который окрашивает эти овощи. Является единственным решением для создания определенных классов, которые нацелены на specfic veggies? Поэтому, чтобы ответить на мой собственный вопрос, в случае с несколькими JFrames они выглядели бы как разные классы, мой случай?
public class LabelsButtonsPanelsandSnakes {
public static void main(String[] args){
final JFrame frame = new JFrame("Test");
JMenuBar menuBar = new JMenuBar(); //menubar
JMenu menu = new JMenu("Menu");
JMenuItem chameleon = new JMenuItem("Change Color");
class CHameleonaction implements ActionListener{ //inside class opens
JFrame frameHolder; //line 8
public void actionPerformed(ActionEvent e)
{
frame.getContentPane().setBackground(new Color(112,253,95));
}
} //inside class ends
chameleon.addActionListener(new CHameleonaction());
menuBar.add(menu);
frame.setJMenuBar(menuBar);
}
Я не понимаю переменную 'frameHolder' либо. Это неправильно, и похоже, что это приведет к исключению NullPointerException. –
Это правильно. По-видимому, мой вопрос заключается в том, как связать объект JFrame с внешним классом во внутренний класс для манипуляции. – fungusanthrax
Это, по сути, просто плохая конструкция ... здесь нет причин для вложенного класса. Просто используйте анонимную реализацию класса ActionListener и сделайте фрейм, необходимый для доступа к окончательному (если вам это действительно нужно). Если вы хотите, чтобы я опубликовал данные, дайте мне знать. – RudolphEst