Avatar billede jesperthomsen1980 Nybegynder
28. oktober 2002 - 22:28 Der er 1 kommentar og
1 løsning

Brug af null layout i en klasse for sig

Hej ekspert

Jeg 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);
              }
       
        }
        );   
    }
   
}
Avatar billede di8leva Nybegynder
29. oktober 2002 - 08:07 #1
før det førsta skall man inte døpa klasser till namn som innehåller å, æ, ø.
Sen skall du i optimalinkøbdriver efter att du skapat din frame anvænda metoden setVisible(true) på den. Sætt gærna en storlek också, så kan du se att det fungerar.

optimalindkøb frame = new optimalindkøb();
frame.setSize(400, 400);
frame.setVisible(true);
Avatar billede di8leva Nybegynder
29. oktober 2002 - 08:18 #2
fjern dessutom importen "import optimalindkøb;"
filerna ligger i samma bibliotek och behøver inte importeras.

sedan har du skrivit:
//setContentPane(wilsonPanel);

och det ær klart inget syns om raden ær bortkommenterad.
om du kommenterar in den igen virker det.
det virker før mig =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester