Avatar billede rhrathje Nybegynder
14. august 2003 - 01:52 Der er 8 kommentarer og
1 løsning

Kan man det her eller? Hvis ja, hvad er fejlen?

Hej folkens.
Kan man det jeg har forsoegt i koeden?

package simplegui;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class Result
    extends SimpleGui
{
  private static Result instance;
  private long result;

  public static Result getInstance() //Skulle gerne vaere en singlton
  {
    if (instance == null)
      instance = new Result(long a, long b, String d);
    return instance;
  }

  public Result(long a, long b, String d)
  {
    if (d.equals("+"))
    {
      result = a + b;
      TextFieldResult.setText(String.valueOf(result));
      d = null;
    }
    else if (d.equals("*"))
    {
      result = a * b;
      TextFieldResult.setText(String.valueOf(result));
      d = null;
    }
  }
}

Faar dog fejl i:instance = new Result(long a, long b, String d);
Hvordan faar jeg den rigtig???
Avatar billede Slettet bruger
14. august 2003 - 02:04 #1
public static Result getInstance(long a, long b, String d) //Skulle gerne vaere en singlton
  {
    if (instance == null)
      instance = new Result(a, b, d);
    return instance;
  }
Avatar billede bearhugx Nybegynder
14. august 2003 - 02:04 #2
det kan du ikke - som du kan se i din singleton-metode getInstance ... så har værdierne a b og c ingen værdier (derudover må det være en fejl, at du også har long foran dem...)
Avatar billede bearhugx Nybegynder
14. august 2003 - 02:06 #3
så som jeg kan se at mercur8 har skrevet, så bliver du nødt til at sende nogle variabler afsted til singleton-metoden... ellers vil den jo ikke vide, hvad den skal instantiere konstruktøren med...
Avatar billede bearhugx Nybegynder
14. august 2003 - 02:07 #4
Er der en, som er ved at lave en regnemaskine, måske ? :-)))
Avatar billede rhrathje Nybegynder
14. august 2003 - 02:08 #5
Du har helt ret, at der staar long foran, er en fejl... Og den faar variabler med, men fra en anden klasse og ja, det er en lomme regner... Skal lave GUI'en i java, og lige have det testet og derefter skal alle beregninger foretages i c++.
Avatar billede bearhugx Nybegynder
14. august 2003 - 02:11 #6
ok -- hvad er grunden for denne sammenblanding af sprog... --- hvis det alligevel skal deles op således at beregninger skal foretages externt, så ville jeg foreslå dig allerede nu at fjerne udregning fra Resultat (som, så vidt jeg kan se, er en klasse til at bestyre lommeregnerens display... am i right ? )
Avatar billede rhrathje Nybegynder
14. august 2003 - 02:31 #7
Grunden til dette mix, er at jeg sidder i en forskningsvirksomhed, hvor en masse gamle applicationer er lavet i c++, men at vi oensker at bruge java Gui'er til at vise resultaterne... You are right, og den skal nok blive fjernet, men nu vil jeg gerne have det til at virke...
Hele koden kommer her, den er frygtelig, da JBuilder har genereret det meste af koden paa baggrund af Drag-n-Drop. (Men GUI koden er nu heller ikke saa interessant i oejeblikket, da det er de native kald vi er interesseret i at undersoege kompleksiteten af)

package simplegui;

import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.lang.Long;
import java.lang.*;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (result) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class SimpleGui
    extends JFrame
{
  public static long a = 0;
  public static long b = 0;
  public static String d;

  JFrame jFrame1 = new JFrame();
  JPanel jPanel1 = new JPanel();
  JButton Button1 = new JButton("1");
  JButton Button2 = new JButton("2");
  JButton Button3 = new JButton("3");
  JButton ButtonSum = new JButton();
  JTextField FieldResult = new JTextField();
  TitledBorder titledBorder1;
  TitledBorder titledBorder2;
  BorderLayout borderLayout1 = new BorderLayout();
  JTextField TextFieldResult = new JTextField();
  JButton ButtomResult = new JButton();
  JButton ButtonMulti = new JButton();

  public SimpleGui()
  {
    try
    {
      jbInit();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  public static void main(String[] args)
  {
    SimpleGui simpleGui1 = new SimpleGui();
  }

  private void jbInit() throws Exception
  {
    titledBorder1 = new TitledBorder("");
    titledBorder2 = new TitledBorder("");
    jFrame1.getContentPane().setBackground(SystemColor.window);
    jFrame1.setDefaultCloseOperation(jFrame1.EXIT_ON_CLOSE);
    jFrame1.setResizable(false);
    jFrame1.getContentPane().setLayout(borderLayout1);
    Button1.setBounds(new Rectangle(5, 42, 83, 27));
    Button1.setText("1");
    Button1.addActionListener(new SimpleGui_Button1_actionAdapter(this));
    Button2.setBounds(new Rectangle(91, 42, 83, 27));
    Button2.setText("2");
    Button2.addActionListener(new SimpleGui_Button2_actionAdapter(this));
    Button3.setBounds(new Rectangle(176, 42, 83, 27));
    Button3.setText("3");
    Button3.addActionListener(new SimpleGui_Button3_actionAdapter(this));
    ButtonSum.setBounds(new Rectangle(5, 72, 83, 27));
    ButtonSum.setText("+");
    ButtonSum.addActionListener(new SimpleGui_ButtonSum_actionAdapter(this));
    jPanel1.setBorder(titledBorder2);
    jPanel1.setDebugGraphicsOptions(0);
    jPanel1.setMaximumSize(new Dimension(100000, 100000));
    jPanel1.setLayout(null);
    jPanel1.setSize(50, 30);
    TextFieldResult.setText("");
    TextFieldResult.setBounds(new Rectangle(5, 7, 254, 32));
    ButtomResult.setBounds(new Rectangle(176, 72, 83, 27));
    ButtomResult.setText("=");
    ButtomResult.addActionListener(new SimpleGui_ButtomResult_actionAdapter(this));
    ButtonMulti.setBounds(new Rectangle(90, 72, 83, 27));
    ButtonMulti.setText("*");
    ButtonMulti.addActionListener(new SimpleGui_ButtonMulti_actionAdapter(this));
    jPanel1.add(ButtonSum, null);
    jPanel1.add(Button1, null);
    jPanel1.add(Button2, null);
    jPanel1.add(Button3, null);
    jPanel1.add(FieldResult, null);
    jPanel1.add(TextFieldResult, null);
    jPanel1.add(ButtomResult, null);
    jPanel1.add(ButtonMulti, null);
    jFrame1.getContentPane().add(jPanel1, BorderLayout.CENTER);
    jFrame1.setSize(new Dimension(300, 164));
    jFrame1.setVisible(true);
  }

  void Button1_actionPerformed(ActionEvent e)
  {
    TextFieldResult.setText(TextFieldResult.getText() + "1");
  }

  void Button2_actionPerformed(ActionEvent e)
  {
    TextFieldResult.setText(TextFieldResult.getText() + "2");
  }

  void Button3_actionPerformed(ActionEvent e)
  {
    TextFieldResult.setText(TextFieldResult.getText() + "3");
  }

  void ButtonSum_actionPerformed(ActionEvent e)
  {
    String f = TextFieldResult.getText();
    a = Long.parseLong(f);
    d = "+";
    TextFieldResult.setText(null);
  }

  void ButtonMulti_actionPerformed(ActionEvent e)
  {
    String f = TextFieldResult.getText();
    a = Long.parseLong(f);
    d = "*";
    TextFieldResult.setText(null);
  }

  void ButtomResult_actionPerformed(ActionEvent e)
  {
    String g = TextFieldResult.getText();
    b = Long.parseLong(g);
    simplegui.Result.getInstance();
  }
}

class SimpleGui_Button1_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_Button1_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.Button1_actionPerformed(e);
  }
}

class SimpleGui_Button2_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_Button2_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.Button2_actionPerformed(e);
  }
}

class SimpleGui_Button3_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_Button3_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.Button3_actionPerformed(e);
  }
}

class SimpleGui_ButtonSum_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_ButtonSum_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.ButtonSum_actionPerformed(e);
  }
}

class SimpleGui_ButtomResult_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_ButtomResult_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.ButtomResult_actionPerformed(e);
  }
}

class SimpleGui_ButtonMulti_actionAdapter
    implements java.awt.event.ActionListener
{
  SimpleGui adaptee;

  SimpleGui_ButtonMulti_actionAdapter(SimpleGui adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.ButtonMulti_actionPerformed(e);
  }
}

og Result klassen har du jo set...
Avatar billede rhrathje Nybegynder
14. august 2003 - 02:34 #8
Hvis man koerer applicationen, og man efter at have regnet noet ud igen taster eks. + tal =, saa aabnes der et nyt vindue, hvor resultatet vises.. Giver den forklaring nogen mening??
Avatar billede rhrathje Nybegynder
14. august 2003 - 07:46 #9
Har faaet styr paa det nu...
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