Reputation: 103
First of all i am only programming 6-7 months in a school envirement so this might be a stupid question.
In class we just recently learned about AWT and SWING. So while i was reading up on it i decided to test some things out and incorporate some in my program for the exams in a copple of months.
So what i did was make a GUI where if you press a button you got to a class called VoegToe and add a parameter (Trein trein).
Now i tried to add a GroupLayout but after recieving a error like this i realy have no clue where to start or what i have done wrong.
The error :
java.lang.IllegalStateException: javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@7a3cdf,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Annuleer,defaultCapable=true] is not attached to a horizontal group
The code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.GroupLayout.*;
/**
* Voeg loco of wagen toe aan het systeem
*
* @author Pieter-Jan Casteels
* @version 2017-04-27
*/
public class VoegToe
{
private Trein trein;
private JFrame frame;
/**
* Constructor voor objects van class VoegToe
*/
public VoegToe(Trein newTrein)
{
setTrein(newTrein);
//makePopUp();
}
/**
* Setter voor de Trein classe
*
* @param Trein de huidige Trein
*/
private void setTrein(Trein newTrein)
{
trein = newTrein;
//makePopUp();
}
public void makePopUp()
{
// DropDown voor het selecteren van wagen of Loco
String[] comboFill = {"Wagen", "Loco"};
JComboBox locoWagen = new JComboBox(comboFill);
JTextField wagenNummer = new JTextField();
JTextField lengte = new JTextField();
JTextField massa = new JTextField();
JTextField lading = new JTextField();
JTextField remming = new JTextField();
JTextField handRem = new JTextField();
JButton voegToeButton = new JButton("Voeg Toe");
JButton resetButton = new JButton("Reset");
JButton annButton = new JButton("Annuleer");
frame = new JFrame("Voeg Wagen of Loco toe");
Container frameContent = frame.getContentPane();
GroupLayout layout = new GroupLayout(frameContent);
frameContent.setLayout(layout);
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(locoWagen)
.addComponent(wagenNummer)
.addComponent(lengte))
.addGroup(layout.createParallelGroup()
.addComponent(massa)
.addComponent(lading))
.addGroup(layout.createParallelGroup()
.addComponent(remming)
.addComponent(handRem))
.addGroup(layout.createParallelGroup()
.addComponent(voegToeButton)
.addComponent(resetButton)
.addComponent(annButton))
);
frame.pack();
frame.setVisible(true);
}
/**
* Voeg een wagen toe zonder schroefrem
*
* @param long de nummer van de wagen
* @param intiger lengte van de wagen in CM
* @param intiger de massa van de wagen in KG
* @param intiger de massa van de lading in KG
* @param intiger de remming van de wagen
*/
public void addWagen(long newWagenNummer, int newLengte, int newMassa, int newLading, int newRemming)
{
Wagen wagen = new Wagen(newWagenNummer, newLengte, newMassa, newLading, newRemming);
trein.voegWagenToe(wagen);
}
/**
* Voeg een wagen toe met schroefrem
*
* @param long de nummer van de wagen
* @param intiger lengte van de wagen in CM
* @param intiger de massa van de wagen in KG
* @param intiger de massa van de lading in KG
* @param intiger de remming van de wagen
* @param intiger remming van schroefrem
*/
public void addWagen(long newWagenNummer, int newLengte, int newMassa, int newLading, int newRemming, int newRemmingSchroefrem)
{
Wagen wagen = new Wagen(newWagenNummer, newLengte, newMassa, newLading, newRemming, newRemmingSchroefrem);
trein.voegWagenToe(wagen);
}
/**
* Voeg een Locomotief toe
*
* @param long de nummer van de loco
* @param intiger lengte van de loco in CM
* @param intiger de massa van de loco in KG
* @param intiger de remming van de loco
*/
public void addLoco(long newLocoNummer, int newLengte, int newMassa, int newRemming, boolean newAlsVoertuig)
{
Loco loco = new Loco(newLocoNummer, newLengte, newMassa, newRemming, newAlsVoertuig);
trein.voegLocoToe(loco);
}
}
I hope there is someone who sees what i have done wrong and be able to explain in newby language :)
Upvotes: 0
Views: 258
Reputation: 103
My mestake was having only the verticalgroup. A grouplayout should be seen as a table. You have the horizontal and vertical lines where you should place components.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.GroupLayout.*;
/**
* Voeg loco of wagen toe aan het systeem
*
* @author Pieter-Jan Casteels
* @version 2017-04-28
*/
public class VoegToe
{
private Trein trein;
private JFrame frame;
private JTextField wagenNummer;
private JTextField lengte;
private JTextField massa;
private JTextField lading;
private JTextField remming;
private JTextField handRem;
private String currentLocoWagen;
private JCheckBox voertuig;
/**
* Constructor voor objects van class VoegToe
*/
public VoegToe(Trein newTrein)
{
setTrein(newTrein);
setFields();
makePopUp();
}
private void setFields()
{
wagenNummer = new JTextField(16);
lengte = new JTextField(16);
massa = new JTextField(16);
lading = new JTextField(16);
remming = new JTextField(16);
handRem = new JTextField(16);
voertuig = new JCheckBox("Is Voertuig");
currentLocoWagen = "Wagen";
}
/**
* Setter voor de Trein classe
*
* @param Trein de huidige Trein
*/
private void setTrein(Trein newTrein)
{
trein = newTrein;
}
public void makePopUp()
{
frame = new JFrame("Voeg Wagen of Loco toe");
Container frameContent = frame.getContentPane();
GroupLayout layout = new GroupLayout(frameContent);
frameContent.setLayout(layout);
// DropDown voor het selecteren van wagen of Loco
JLabel leeg = new JLabel("");
JLabel lWagenNummer= new JLabel("Wagen Nummer");
JLabel lLengte = new JLabel("Lengte CM");
JLabel lRemming = new JLabel("Remming TON");
JLabel lMassa = new JLabel("Massa KG");
JLabel lLading = new JLabel("Lading KG");
JLabel lHandRem = new JLabel("Hand Rem TON");
String[] comboFill = {"Wagen", "Loco"};
JComboBox locoWagen = new JComboBox(comboFill);
locoWagen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
currentLocoWagen = String.valueOf(locoWagen.getSelectedItem());
}
});
JButton voegToeButton = new JButton("Voeg Toe");
voegToeButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(currentLocoWagen.equals("Wagen"))
{
voegWagenToe();
}
if(currentLocoWagen.equals("Loco"))
{
voegLocoToe();
}
}
});
JButton resetButton = new JButton("Reset");
resetButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
wagenNummer.setText("");
lengte.setText("");
massa.setText("");
lading.setText("");
remming.setText("");
handRem.setText("");
}
});
JButton annButton = new JButton("Annuleer");
annButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(leeg)
.addComponent(lWagenNummer)
.addComponent(wagenNummer)
.addComponent(lMassa)
.addComponent(massa)
.addComponent(resetButton))
.addGroup(layout.createParallelGroup()
.addComponent(locoWagen)
.addComponent(lLengte)
.addComponent(lengte)
.addComponent(lLading)
.addComponent(lading)
.addComponent(annButton))
.addGroup(layout.createParallelGroup()
.addComponent(voertuig)
.addComponent(lRemming)
.addComponent(remming)
.addComponent(lHandRem)
.addComponent(handRem)
.addComponent(voegToeButton)) );
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(leeg)
.addComponent(locoWagen)
.addComponent(voertuig))
.addGroup(layout.createParallelGroup()
.addComponent(lWagenNummer)
.addComponent(lLengte)
.addComponent(lRemming))
.addGroup(layout.createParallelGroup()
.addComponent(wagenNummer)
.addComponent(lengte)
.addComponent(remming))
.addGroup(layout.createParallelGroup()
.addComponent(lMassa)
.addComponent(lLading)
.addComponent(lHandRem))
.addGroup(layout.createParallelGroup()
.addComponent(massa)
.addComponent(lading)
.addComponent(handRem))
.addGroup(layout.createParallelGroup()
.addComponent(resetButton)
.addComponent(annButton)
.addComponent(voegToeButton)) );
frame.pack();
frame.setVisible(true);
}
/**
* Checks op alle data ingeput voor een loco toe te voegen
*/
private void voegLocoToe()
{
long newWagenNummer = Long.parseLong(wagenNummer.getText());
int newLengte = Integer.parseInt(lengte.getText());
int newMassa = Integer.parseInt(massa.getText());
int newRemming = Integer.parseInt(remming.getText());
// Standaard is de locomotief geen voertuig
boolean isVoertuig = false;
if(voertuig.isSelected())
{
isVoertuig = true;
}
addLoco(newWagenNummer, newLengte, newMassa, newRemming, isVoertuig);
}
/**
* Checks op alle data ingeput voor een wagen toe te voegen
*/
private void voegWagenToe()
{
long newWagenNummer = Long.parseLong(wagenNummer.getText());
int newLengte = Integer.parseInt(lengte.getText());
int newMassa = Integer.parseInt(massa.getText());
int newLading = Integer.parseInt(lading.getText());
int newRemming = Integer.parseInt(remming.getText());
// Kijk of wagen handrem heeft of niet
if(handRem.getText().equals(""))
{
addWagen(newWagenNummer, newLengte, newMassa, newLading, newRemming);
}
else
{
int newHandRem = Integer.parseInt(handRem.getText());
addWagen(newWagenNummer, newLengte, newMassa, newLading, newRemming, newHandRem);
}
}
/**
* Voeg een wagen toe zonder schroefrem
*
* @param long de nummer van de wagen
* @param intiger lengte van de wagen in CM
* @param intiger de massa van de wagen in KG
* @param intiger de massa van de lading in KG
* @param intiger de remming van de wagen
*/
public void addWagen(long newWagenNummer, int newLengte, int newMassa, int newLading, int newRemming)
{
Wagen wagen = new Wagen(newWagenNummer, newLengte, newMassa, newLading, newRemming);
trein.voegWagenToe(wagen);
}
/**
* Voeg een wagen toe met schroefrem
*
* @param long de nummer van de wagen
* @param intiger lengte van de wagen in CM
* @param intiger de massa van de wagen in KG
* @param intiger de massa van de lading in KG
* @param intiger de remming van de wagen
* @param intiger remming van schroefrem
*/
public void addWagen(long newWagenNummer, int newLengte, int newMassa, int newLading, int newRemming, int newHandRem)
{
Wagen wagen = new Wagen(newWagenNummer, newLengte, newMassa, newLading, newRemming, newHandRem);
trein.voegWagenToe(wagen);
}
/**
* Voeg een Locomotief toe
*
* @param long de nummer van de loco
* @param intiger lengte van de loco in CM
* @param intiger de massa van de loco in KG
* @param intiger de remming van de loco
*/
public void addLoco(long newLocoNummer, int newLengte, int newMassa, int newRemming, boolean newAlsVoertuig)
{
Loco loco = new Loco(newLocoNummer, newLengte, newMassa, newRemming, newAlsVoertuig);
trein.voegLocoToe(loco);
}
}
Upvotes: 1