首先,我只在学校环境中编程6-7个月,所以这可能是一个愚蠢的问题。
在课堂上,我们刚刚了解到AWT和Swing。因此,当我阅读它的时候,我决定测试一些事情,并在几个月的时间内将一些内容纳入我的计划中。
所以我要做的是制作一个GUI,如果您按下按钮,您可以在一个名为voegtoe的班级上添加参数(Trein trein(。
现在,我尝试添加一个grouplayout,但是在收到这样的错误之后,我真的不知道从哪里开始或做错了什么。
错误:
java.lang.illegalstateException: javax.swing.jbutton [,0,0,0x0,无效,AlignmentX = 0.0,Alignmenty = 0.5,border = javax.swing.plaf.bordoruiresource $ comporduireSource $ comporduireResource@7a3cdf,7a3cdf,flags = 296,flags = 296,最大值defaulticon =,disabledicon =,disabledsectectedicon =,margin = javax.swing.plaf.insetsuiresource [top = 2,left = 14,left = 14,bottom = 2,右= 14],paintborder = true,paintfocus = truefocus = true,prasteDicon =,plastoverEnabled = true = trure = true = true = true,loldovericon =,RolloverSelectedIcon =,selectedicon =,text = annuleer,defaultcapable = true] 不连接到水平组
代码
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);
}
}
我希望有人看到我做错了什么并能够用newby语言解释:(
我的混血儿只有垂直组。杂项应被视为桌子。您的水平和垂直线应放置组件。
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);
}
}