Brug af null layout i en klasse for sig
Hej ekspertJeg er ved at lave GUI i jave, men har det problem, at hvis jeg anvender Null layout, kan jeg ikke køre et skærmbillede fra en anden fil/driver.
Hele programmet/GUI skal derfor være i én fil.
På forhånd tak!
Selve driveren ser sådan ud:
import java.awt.*;
import javax.swing.*;
import optimalindkøb;
class optimalindkøbdriver
{
public static void main (String [] args) throws Exception
{
optimalindkøb frame = new optimalindkøb();
}
}
Og programmet ser sådan ud:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DecimalFormat;
public class optimalindkøb extends JFrame
{
private JPanel wilsonPanel;
private JLabel yLabel, sLabel, iLabel, cLabel, optimalLabel, beskrivelseLabel, procentLabel, stk1Label,stk2Label , kr1Label, kr2Label;
private JTextField yTextField, sTextField, iTextField, cTextField, optimalTextField;
private JButton udregnButton, exitButton;
private int y, s, i, optimal;
double c;
public optimalindkøb(String title)
{ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(title);
setSize(650, 300);
Dimension d = getToolkit().getScreenSize();
setLocation((int)(d.getWidth()/2) - (getWidth()/2),
(int)(d.getHeight()/2) - (getHeight()/2));
yLabel = new JLabel("Årlig forbrug:");
sLabel = new JLabel("Ordreomkostniger pr indkøb:");
iLabel = new JLabel("Årlig lageromkostninger i procent:");
cLabel = new JLabel("Indkøbspris pr. stk:");
optimalLabel = new JLabel("Den optimale indkøbsstørrelse:");
beskrivelseLabel = new JLabel("");
procentLabel = new JLabel("procent");
kr1Label = new JLabel("kroner");
kr2Label = new JLabel("kroner");
stk1Label = new JLabel("stk");
stk2Label = new JLabel("stk");
yTextField = new JTextField("");
sTextField = new JTextField("");
iTextField = new JTextField("");
cTextField = new JTextField("");
optimalTextField = new JTextField("");
udregnButton = new JButton("Udregn resultat");
exitButton = new JButton("Afslut");
yTextField.setToolTipText ("Årlig forbrug i stk (Eksempel: 100)");
sTextField.setToolTipText ("Indkøbsomkostniger pr gang (Eksempel: 100)");
iTextField.setToolTipText ("Lageromkostninger i procent (Eksempel: 20)");
cTextField.setToolTipText ("Indkøbspris på stk (Eksempel: 100)");
wilsonPanel = new JPanel();
wilsonPanel.setLayout(null);
wilsonPanel.setBorder(BorderFactory.createTitledBorder(""));
wilsonPanel.add(yLabel);
wilsonPanel.add(sLabel);
wilsonPanel.add(iLabel);
wilsonPanel.add(cLabel);
wilsonPanel.add(optimalLabel);
wilsonPanel.add(beskrivelseLabel);
wilsonPanel.add(kr1Label);
wilsonPanel.add(kr2Label);
wilsonPanel.add(stk1Label);
wilsonPanel.add(stk2Label);
wilsonPanel.add(procentLabel);
wilsonPanel.add(yTextField);
wilsonPanel.add(sTextField);
wilsonPanel.add(iTextField);
wilsonPanel.add(cTextField);
wilsonPanel.add(optimalTextField);
wilsonPanel.add(udregnButton);
wilsonPanel.add(exitButton);
Insets insets = wilsonPanel.getInsets();
yLabel.setBounds (30 + insets.left, 20 + insets.top, 200, 20);
sLabel.setBounds (30 + insets.left, 40 + insets.top, 200, 20);
iLabel.setBounds (30 + insets.left, 60 + insets.top, 250, 20);
cLabel.setBounds (30 + insets.left, 80 + insets.top, 250, 20);
optimalLabel.setBounds (30 + insets.left, 120 + insets.top, 250, 20);
beskrivelseLabel.setBounds (30 + insets.left, 160 + insets.top, 600, 20);
stk1Label.setBounds (420 + insets.left, 20 + insets.top, 60, 20);
kr1Label.setBounds (420 + insets.left, 40 + insets.top, 60, 20);
procentLabel.setBounds (420 + insets.left, 60 + insets.top, 60, 20);
kr2Label.setBounds (420 + insets.left, 80 + insets.top, 60, 20);
stk2Label.setBounds (420 + insets.left, 120 + insets.top, 60, 20);
yTextField.setBounds (350 + insets.left, 20 + insets.top, 70, 20);
sTextField.setBounds (350 + insets.left, 40 + insets.top, 70, 20);
iTextField.setBounds (350 + insets.left, 60 + insets.top, 70, 20);
cTextField.setBounds (350 + insets.left, 80 + insets.top, 70, 20);
optimalTextField.setBounds (350 + insets.left, 120 + insets.top, 70, 20);
udregnButton.setBounds (490 + insets.left, 80 + insets.top, 130, 20);
exitButton.setBounds (490 + insets.left, 220 + insets.top, 130, 20);
//setContentPane(wilsonPanel);
udregnButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
DecimalFormat fmt = new DecimalFormat ("0.##");
y = Integer.parseInt (yTextField.getText());
s = Integer.parseInt (sTextField.getText());
i = Integer.parseInt (iTextField.getText());
c = Integer.parseInt (cTextField.getText());
double Q = Math.sqrt((2 * y * s)/(i * c)) ;
Q = (Q * 10);
optimalTextField.setText("" + (fmt.format(Q)));
double antal = (y / Q);
beskrivelseLabel.setText("For at opnå optimal indkøbsmængde skal det tilstæbes at indkøbe "
+ fmt.format(Q)+ " stk " + (fmt.format(antal)) +" gange om året");
}
}
);
exitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);
}
}
