Вы никогда не инициализируете домашнюю переменную каким-либо объектом, поэтому имеет смысл, что вы увидите NPE, если попытаетесь вывести методы из него.
т.е.
// this declares a variable but doesn't assign anything to it
JFrame home; // home is not assigned and is currently null
и не
// this both declares a variable and assigns an object reference to it.
JFrame home = new JFrame();
Кроме того, почему вы класс продлить JFrame, а затем попытаться создать еще один в классе?
Что касается "прекрасного" кода - вам нужно изучить правила форматирования кода Java. Вы не должны отступать код случайным образом, но, скорее всего, весь код в одном блоке должен иметь отступы одинаковой суммы.
Относительно:
Я читал, что это потому, что вы Asign вратаря значение, или нуль наклоняю использовать в качестве значения, но WTF, я имею в виду Im почти уверена, что мой код написан правильно.
Это означает, что вы еще не понимаете, что значит «присваивать значение», которое отличается от объявления переменной (см. Выше) и которое хорошо объяснено на первых страницах большинства вступлений в Java книга. Обратите внимание, что программирование GUI Swing - довольно продвинутая ветвь Java-программирования, и вам, скорее всего, будет лучше сначала пройти некоторые базовые учебники по книгам перед тем, как перейти в графическое программирование.
Это будет еще один способ, чтобы создать графический интерфейс, похожий на то, что вы пытались создать:
import java.awt.Dimension;
import javax.swing.*;
@SuppressWarnings("serial")
public class MathmePanel extends JPanel {
private static final int PREF_W = 600;
private static final int PREF_H = 500;
public MathmePanel() {
// create my GUI here
}
// set size in a flexible and safe way
@Override
public Dimension getPreferredSize() {
Dimension superSize = super.getPreferredSize();
if (isPreferredSizeSet()) {
return superSize;
}
int prefW = Math.max(PREF_W, superSize.width);
int prefH = Math.max(PREF_H, superSize.height);
return new Dimension(prefW, prefH);
}
private static void createAndShowGui() {
MathmePanel mainPanel = new MathmePanel();
// create JFrame rather than override it
JFrame frame = new JFrame("Pruebax1");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
// Start Swing GUI in a safe way on the Swing event thread
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
Вы никогда не присвоить значение 'дома' ... – MadProgrammer
Пожалуйста заканчивать [Java Variable декларации vs. Assignment] (http://stackoverflow.com/questions/2614072/java-define-terms-initialization-declaration-and-assignment). –