2013-08-10 5 views
4

Я пытаюсь создать небольшую Jpanel с ее GroupLayout. Следуя за documentation как можно больше, а также рассмотрев несколько вопросов StackOverflow, я все еще застрял.GroupLayout: Вертикальные и горизонтальные группы

Ошибка следующим образом:

Исключение в нити "АВТ-EventQueue-0" java.lang.IllegalStateException: javax.swing.JButton [, 0,0,0x0, недействительным, alignmentX = 0,0, alignmentY = 0,5, граница = com.apple.laf.AquaButtonBorder $ Dynamic @ 5eef2e7c, флаги = 288, MaximumSize =, MinimumSize =, PreferredSize =, DefaultIcon =, disabledIcon =, disabledSelectedIcon = маржа = javax.swing.plaf .InsetsUIResource [вершина = 0, левая = 2, снизу = 0, вправо = 2], paintBorder = верно, paintFocus = верно, pressedIcon =, rolloverEnabled = ложь, rolloverIcon =, = rolloverSelectedIcon, selectedIcon = текст = Invest, defaultCapable = true] не присоединен к вертикальной группе

Я знаю, что проблема связана с тем, где находятся кнопки. Ведь ошибка говорит об этом явно. Однако я просто не могу понять, каким образом я должен их прикрепить. Есть идеи?

JPanel panel = new JPanel(); 

    GroupLayout layout = new GroupLayout(panel); 
    panel.setLayout(layout); 


    panel.setMinimumSize(new Dimension(2000,100));  
    panel.setBorder(BorderFactory.createTitledBorder((cdo.getTicker()) + " : (" + cdo.getCurrency() + ")")); 


    layout.setVerticalGroup(
      layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
        .addComponent(new JButton("Invest")))      
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
          .addComponent(new JButton("Ignore"))) 
          .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
            .addComponent(new JButton("Article"))) 

      ); 


    layout.setHorizontalGroup(
      layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
        .addComponent(new JButton("Invest")) 
        .addComponent(new JButton("Ignore")) 
        .addComponent(new JButton("Article")) 
        ) 
      ); 

ответ

7

new JButton("Invest") создает новую кнопку, которая отличается от кнопки ранее созданного с использованием новых JButton("Invest").

Перемещение инициализаций кнопок до макета:

JButton investButton = new JButton("Invest"); 
JButton articleButton = new JButton("Article"); 
JButton ignoreButton = new JButton("Ignore"); 

layout.setVerticalGroup(
    layout.createSequentialGroup() 
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
      .addComponent(investButton))      
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
      .addComponent(ignoreButton)) 
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
      .addComponent(articleButton))); 

layout.setHorizontalGroup(
    layout.createSequentialGroup() 
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
      .addComponent(investButton) 
      .addComponent(ignoreButton) 
      .addComponent(articleButton))); 
+0

Aaaand, я идиот. – TheMightyLlama