【问题标题】:ArrayIndexOutOfBoundsException error although I don't use arraysArrayIndexOutOfBoundsException 错误,虽然我不使用数组
【发布时间】:2014-07-06 16:51:03
【问题描述】:

我是 java 新手。虽然我的代码太简单了,但我还是经常遇到这个错误。我不使用任何数组,我只有 4 个 Jbuttons,一个 Jtextpane 没有执行任何事件!!!

代码:

private JToolBar bar = new JToolBar(JToolBar.HORIZONTAL);
    JMenuBar _bar = new JMenuBar();
    JTextPane _txt = new JTextPane();
    JScrollPane _scr = new JScrollPane(_txt,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    JButton _save = new JButton("Save");
    JButton _cancel = new JButton("Cancel");
    JButton _color = new JButton("Color");
    JColorChooser _choser = new JColorChooser();
    JButton _calculater = new JButton("Calculater");
    JPanel _pnl = new JPanel();
    Color c = getForeground();

    //constructor   
    public NotePade() {
        //set size and position
        setSize(800,375);
        setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-(getSize().width/2), Toolkit.getDefaultToolkit().getScreenSize().height/2 - +(getSize().height/2));
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        GridBagLayout _grd = new GridBagLayout();
        _pnl.setLayout(_grd);
        _pnl.setBackground(Color.LIGHT_GRAY);

        JMenu _file = new JMenu("File");
        JMenuItem _open = new JMenuItem("Open");
        JMenuItem _close = new JMenuItem("Close");
        _file.add(_open);
        _file.add(_close);

        JMenu _edit = new JMenu("Edit");
        JMenuItem _cut = new JMenuItem("Cut");
        JMenuItem __copy = new JMenuItem("Copy");
        _edit.add(_cut);
        _edit.add(__copy);

        _bar.add(_file);
        _bar.add(_edit);
        setJMenuBar(_bar);


        GridBagConstraints _cons = new GridBagConstraints();
        _cons.gridx=0;
        _cons.gridy=0;
        _cons.gridwidth=8;
        _cons.gridheight=4;
        _cons.weightx=80;
        _cons.weighty=80;
        _cons.fill=GridBagConstraints.BOTH;
        _cons.anchor=GridBagConstraints.CENTER;
        _txt.setSize(400, 400);
        _txt.setFont(new Font("Times New Roman",Font.BOLD,22));
        _txt.setForeground(Color.darkGray);
        _grd.setConstraints(_scr, _cons);
        _pnl.add(_scr);

        _cons = new GridBagConstraints();
        _cons.gridx=9;
        _cons.gridy=0;
        _cons.gridwidth=2;
        _cons.gridheight=2;
        _cons.weightx=20;
        _cons.weighty=40;
        _cons.fill=GridBagConstraints.NONE;
        _cons.anchor=GridBagConstraints.CENTER;
        _color.addActionListener(this);
        _grd.setConstraints(_color, _cons);
        _pnl.add(_color);


        _cons = new GridBagConstraints();
        _cons.gridx=9;
        _cons.gridy=2;
        _cons.gridwidth=2;
        _cons.gridheight=2;
        _cons.weightx=20;
        _cons.weighty=40;
        _cons.fill=GridBagConstraints.NONE;
        _cons.anchor=GridBagConstraints.CENTER;
        _grd.setConstraints(_calculater, _cons);
        _pnl.add(_calculater);

        _cons = new GridBagConstraints();
        _cons.gridx=0;
        _cons.gridy=5;
        _cons.gridwidth=2;
        _cons.gridheight=1;
        _cons.weightx=30;
        _cons.weighty=10;
        _cons.fill=GridBagConstraints.NONE;
        _cons.anchor=GridBagConstraints.CENTER;
        _save.addActionListener(this);
        _grd.setConstraints(_save, _cons);
        _pnl.add(_save);

        _cons = new GridBagConstraints();
        _cons.gridx=2;
        _cons.gridy=5;
        _cons.gridwidth=2;
        _cons.gridheight=1;
        _cons.weightx=30;
        _cons.weighty=10;
        _cons.fill=GridBagConstraints.NONE;
        _cons.anchor=GridBagConstraints.CENTER;
        _cancel.addActionListener(this);
        _grd.setConstraints(_cancel, _cons);
        _pnl.add(_cancel);

        getContentPane().add(_pnl);
        setVisible(true);
    }

留下错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
    at javax.swing.text.BoxView.updateLayoutArray(BoxView.java:214)
    at javax.swing.text.BoxView.replace(BoxView.java:185)
    at javax.swing.text.View.append(View.java:418)
    at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:473)
    at javax.swing.text.FlowView.layout(FlowView.java:201)
    at javax.swing.text.BoxView.setSize(BoxView.java:397)
    at javax.swing.text.BoxView.updateChildSizes(BoxView.java:366)
    at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:348)
    at javax.swing.text.BoxView.layout(BoxView.java:708)
    at javax.swing.text.BoxView.setSize(BoxView.java:397)
    at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1714)
    at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:912)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1651)
    at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1330)
    at javax.swing.JViewport.getViewSize(JViewport.java:1002)
    at javax.swing.plaf.basic.BasicScrollPaneUI.syncScrollPaneWithViewport(BasicScrollPaneUI.java:278)
    at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(BasicScrollPaneUI.java:1033)
    at javax.swing.JViewport.fireStateChanged(JViewport.java:1370)
    at javax.swing.JViewport$ViewListener.componentResized(JViewport.java:1289)
    at java.awt.Component.processComponentEvent(Component.java:6331)
    at java.awt.Component.processEvent(Component.java:6285)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

提前致谢

【问题讨论】:

  • 你给了我们错误,代码在哪里?
  • 我没有看到任何使用数组的代码。 BoxView 正在深入使用数组。您需要向我们提供上下文(即代码),以便我们可以更快/更轻松地帮助您。
  • 您将无效参数传递给 Swing。你所要做的就是弄清楚是哪一个。这就是所谓的“调试”。玩得开心!
  • @HotLicks 我什么也没找到。有什么建议吗?
  • 仔细观察——如果这很容易,任何人都可以做到。

标签: java indexoutofboundsexception


【解决方案1】:

在代码的最后两行更改

getContentPane().add(_pnl);
// to
setContentPane(_pnl)

我遇到了与您相同的异常并将代码更改为该异常。它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-22
    • 2013-08-22
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多