Не удается найти источник исключения nullPointerException - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь создать простой графический интерфейс, но сталкиваюсь с некоторыми ошибками.Я хочу создать 3 простые кнопки, чтобы они отображали длину экрана.Как мне поступить так?

Мой код на данный момент:

  public static void main(String[] args) {
    JFrame frame = new JFrame ("JFrame");
    JPanel panel = new JPanel( );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    JButton buttons[] = new JButton[2];
    for(int i = 0;i<=buttons.length ; i++){
     panel.add(buttons[i]);
    }
    frame.getContentPane( ).add( panel );
    frame.setSize( 500, 500);
    frame.setVisible( true );
  }

Ответы [ 3 ]

4 голосов
/ 08 февраля 2011

Хм, если я помню, массивы объектов в Java инициализируются нулевыми ссылками. Таким образом, вы добавляете null на панель.

Вы должны сделать это:

JButton buttons[] = new JButton[2];
for(int i = 0;i < buttons.length ; i++){
    buttons[i] = new JButton(/* whatever */);
    panel.add(buttons[i]);
}

Опять же, возникает вопрос: зачем использовать массив кнопок, если вы можете просто добавить их при их создании?

2 голосов
/ 08 февраля 2011

Вам нужно инициализировать свои кнопки перед добавлением их на панель.

for(int i = 0;i<buttons.length ; i++){
    buttons[i] = new JButton();
    panel.add(buttons[i]);
}

Также обратите внимание на изменение, которое я внес в цикл for i < buttons.length вместо i <= buttons.length

Вот небольшой пример использования различных кнопок J ( здесь ). Он также включает в себя добавление ImageIcons к кнопкам. кнопка ошибки.

URL imgURL = JButtonDemo.class.getResource("Error.jpg");
ImageIcon icon = new createImageIcon(imgURL ); // should check that imgURL is not null
buttons[0] = new JButton("Error!",icon);

Это делает их немного более полезными, чем значение по умолчанию JButton

2 голосов
/ 08 февраля 2011

Сначала нужно инициализировать кнопки в массиве. Вы можете сделать это, как в следующем примере.

JButton buttons[] = new JButton[2];
for(int i = 0; i < buttons.length; i++){
    buttons[i] = new JButton("" + i);
}
for(int i = 0; i < buttons.length; i++){
    panel.add(buttons[i]);
}

Проблема в том, что изначально все ваши кнопки инициализируются на null. И компоненты не позволяют добавлять к ним null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...