当我尝试运行我的程序时,GUI将无法加载,我无法弄清楚为什么

时间:2016-04-29 01:33:29

标签: java arrays arraylist jpanel

这部分代码在不使用数组或arraylists时工作正常。

// other stuffs

router.get('/login', function(req, res, next) {
    res.render('login', {
        title: 'Login'
    })
});


router.post('/login', passport.authenticate('local-login', {
        failureRedirect: '/users/login',
        failureFlash: 'Invalid username or password'
    }),
    function(req, res) {
        console.log('Authentication Sucessful');
        req.flash('success', 'You have logged in');
        res.redirect('/');
    });
module.exports = router;

这部分代码在不使用数组或arraylists时工作正常

import javax.swing.*;
public class GUI
{
    public static void main(String[] args) {
        JFrame frame = new JFrame("01");
        frame.getContentPane().add(new Panel());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }
}

在这个类中,如果我不使用数组或arraylists,它运行正常,但我无法使用它们。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Panel extends JPanel
{
    private Shapes shapes;

    public Panel () {
        setFocusable(true);
        requestFocusInWindow();
        setPreferredSize(new Dimension(500,500));
    }

    public void paintComponent(Graphics gc) {
        super.paintComponent(gc);
        shapes.draw(gc);
    }
}

2 个答案:

答案 0 :(得分:1)

$_ID中的

NullPointerException因为Panel#paintComponent未初始化...

shapes
public class Panel extends JPanel { private Shapes shapes; public Panel() { shapes = new Shapes(); 中的{p> NullPointerException因为Shapes#popBlocks未初始化

arr

但等等,那只画一个形状?!所有这一切都是使用一些新值更新public class Shapes { //... int[] arr = new int[4]; //... 的实例并将其添加到arr blocks

List

这意味着您有5个块,其值为private void popBlocks(int a, int b, int c, int d) { arr[0] = a; arr[1] = b; arr[2] = c; arr[3] = d; blocks.add(arr); }

您应该将900,100,150,30作为方法级字段,而不是使用实例字段,例如......

arr

此外,public class Shapes { //... //int[] arr; //... private void popBlocks(int a, int b, int c, int d) { int[] arr = new int[4]; arr[0] = a; arr[1] = b; arr[2] = c; arr[3] = d; blocks.add(arr); } } 方法中的for-loop错误,应该从draw循环,而不是0-size - 1,例如

0-size - 2

答案 1 :(得分:0)

for(int i=0; i<blocks.size()-1; i++){
for循环上的

条件错误应为

for(int i=0; i<=blocks.size()-1; i++) . 
or
for(int i=0; i<blocks.size(); i++) 
你可能想试试这个。