View unanswered posts | View active topics It is currently Sat May 25, 2013 6:48 pm



Reply to topic  [ 3 posts ] 
 NegativeArraySizeException at net.miginfocom.layout.Grid 
Author Message

Joined: Mon Aug 23, 2010 6:24 am
Posts: 54
Post NegativeArraySizeException at net.miginfocom.layout.Grid
I am getting this exception:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NegativeArraySizeException
   at net.miginfocom.layout.Grid$FlowSizeSpec.expandSizes(Unknown Source)
   at net.miginfocom.layout.Grid$FlowSizeSpec.access$3600(Unknown Source)
   at net.miginfocom.layout.Grid.adjustMinPrefForSpanningComps(Unknown Source)
   at net.miginfocom.layout.Grid.calcRowsOrColsSizes(Unknown Source)
   at net.miginfocom.layout.Grid.checkSizeCalcs(Unknown Source)
   at net.miginfocom.layout.Grid.getWidth(Unknown Source)
   at net.miginfocom.swing.MigLayout.getSizeImpl(Unknown Source)
   at net.miginfocom.swing.MigLayout.preferredLayoutSize(Unknown Source)
   at java.awt.Container.preferredSize(Container.java:1599)
   at java.awt.Container.getPreferredSize(Container.java:1584)
   at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
   at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:702)
   at java.awt.Container.preferredSize(Container.java:1599)
   at java.awt.Container.getPreferredSize(Container.java:1584)
   at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
   at javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:907)
   at java.awt.Container.preferredSize(Container.java:1599)
   at java.awt.Container.getPreferredSize(Container.java:1584)
   at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
   at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:702)
   at java.awt.Container.preferredSize(Container.java:1599)
   at java.awt.Container.getPreferredSize(Container.java:1584)
   at java.awt.Window.pack(Window.java:706)
   at com.muxlab.vitex.desktop.client.MainFrame.initComponents(MainFrame.java:43)
   at com.muxlab.vitex.desktop.client.MainFrame.<init>(MainFrame.java:24)
   at com.muxlab.vitex.desktop.client.MainFrame$1.run(MainFrame.java:79)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
   at java.awt.EventQueue.access$000(EventQueue.java:84)
   at java.awt.EventQueue$1.run(EventQueue.java:602)
   at java.awt.EventQueue$1.run(EventQueue.java:600)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Here is a simple testcase:

Code:
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTree;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.EmptyBorder;
import net.miginfocom.layout.AC;
import net.miginfocom.layout.CC;
import net.miginfocom.layout.LC;
import net.miginfocom.swing.MigLayout;

public class MainPanel2 extends JPanel
{
  private final JTree deviceTree = new JTree();
  private final JScrollPane devicePane = new JScrollPane(deviceTree);
  private final JButton addDevice = new JButton("+");
  private final JButton removeDevice = new JButton("-");
  private final DefaultListModel groupsListModel = new DefaultListModel();
  private final JList groupsList = new JList(groupsListModel);
  private final JScrollPane groupsPane = new JScrollPane(groupsList);
  private final JTabbedPane right = new JTabbedPane();
  private final JPanel propertiesPanel = new JPanel();
  private final JPanel scriptsPanel = new JPanel();
  private final JLabel redSkewLabel = new JLabel("Red Skew");
  private final JSlider redSkewSlider = new JSlider(0, 127);
  private final SpinnerNumberModel redSkewValue = new SpinnerNumberModel(0, 0, 127, 1);
  private final JSpinner redSkewSpinner = new JSpinner(redSkewValue);
  private final JLabel greenSkewLabel = new JLabel("Green Skew");
  private final JSlider greenSkewSlider = new JSlider(0, 127);
  private final SpinnerNumberModel greenSkewValue = new SpinnerNumberModel(0, 0, 127, 1);
  private final JSpinner greenSkewSpinner = new JSpinner(greenSkewValue);
  private final JLabel blueSkewLabel = new JLabel("Blue Skew");
  private final JSlider blueSkewSlider = new JSlider(0, 127);
  private final SpinnerNumberModel blueSkewValue = new SpinnerNumberModel(0, 0, 127, 1);
  private final JSpinner blueSkewSpinner = new JSpinner(blueSkewValue);
  private final JLabel brightnessLabel = new JLabel("Brightness");
  private final JSlider brightnessSlider = new JSlider(0, 127);
  private final SpinnerNumberModel brightnessValue = new SpinnerNumberModel(0, 0, 127, 1);
  private final JSpinner brightnessSpinner = new JSpinner(brightnessValue);
  private final JLabel sharpnessLabel = new JLabel("Sharpness");
  private final JSlider sharpnessSlider = new JSlider(0, 127);
  private final SpinnerNumberModel sharpnessValue = new SpinnerNumberModel(0, 0, 127, 1);
  private final JSpinner sharpnessSpinner = new JSpinner(sharpnessValue);

  public MainPanel2()
  {
    setLayout(new MigLayout(new LC(), new AC().size("150:300:", 0).grow(100, 0).grow(0, 1), new AC().grow(100, 0).grow(0, 1)));
    deviceTree.setOpaque(false);
    devicePane.setBorder(javax.swing.BorderFactory.createTitledBorder("Devices"));
    add(devicePane, new CC().grow());

    add(right, new CC().spanX().spanY().alignY("top").wrap());

    groupsList.setBorder(javax.swing.BorderFactory.createTitledBorder("Groups"));
    groupsList.setOpaque(false);

    groupsListModel.add(groupsListModel.size(), "Kitchen");
    groupsListModel.add(groupsListModel.size(), "Bar");
    groupsListModel.add(groupsListModel.size(), "Auditorium");
    add(groupsPane, new CC().growX().growY(0f));
    groupsPane.setBorder(new EmptyBorder(0, 0, 0, 0));

    add(addDevice, new CC().growY(0f).alignX("right").split());
    add(removeDevice, new CC().growY(0f).wrap());

    right.addTab("Properties", propertiesPanel);
    propertiesPanel.setLayout(new MigLayout());

    propertiesPanel.add(redSkewLabel);
    propertiesPanel.add(redSkewSlider);
    propertiesPanel.add(redSkewSpinner, new CC().wrap());
    // new JSliderJSpinnerSynchronizer(redSkewSlider, redSkewSpinner).start();

    propertiesPanel.add(greenSkewLabel);
    propertiesPanel.add(greenSkewSlider);
    propertiesPanel.add(greenSkewSpinner, new CC().wrap());
    // new JSliderJSpinnerSynchronizer(greenSkewSlider, greenSkewSpinner).start();

    propertiesPanel.add(blueSkewLabel);
    propertiesPanel.add(blueSkewSlider);
    propertiesPanel.add(blueSkewSpinner, new CC().wrap());
    // new JSliderJSpinnerSynchronizer(blueSkewSlider, blueSkewSpinner).start();

    propertiesPanel.add(brightnessLabel);
    propertiesPanel.add(brightnessSlider);
    propertiesPanel.add(brightnessSpinner, new CC().wrap());
    // new JSliderJSpinnerSynchronizer(brightnessSlider, brightnessSpinner).start();

    propertiesPanel.add(sharpnessLabel);
    propertiesPanel.add(sharpnessSlider);
    propertiesPanel.add(sharpnessSpinner, new CC().wrap());
    // new JSliderJSpinnerSynchronizer(sharpnessSlider, sharpnessSpinner).start();

    right.addTab("Scripts", scriptsPanel);
  }

  public static void main(String[] args)
  {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.getContentPane().add(new MainPanel2());
    frame.pack();
    frame.setVisible(true);
  }
}


The problem is a missing wrap() on this line:

Code:
add(groupsPane, new CC().growX().growY(0f));


but obviously the layout should either work or we should be getting a better error message.

Gili


Tue May 10, 2011 9:30 pm
Profile
Site Admin

Joined: Mon Dec 06, 2004 4:24 pm
Posts: 2485
Location: Sweden
Post Re: NegativeArraySizeException at net.miginfocom.layout.Grid
In the queue.


Tue May 10, 2011 10:47 pm
Profile WWW
Site Admin

Joined: Mon Dec 06, 2004 4:24 pm
Posts: 2485
Location: Sweden
Post Re: NegativeArraySizeException at net.miginfocom.layout.Grid
Fixed.


Sat Aug 13, 2011 2:08 am
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 3 posts ] 

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.