Avatar billede dennism Nybegynder
07. september 2006 - 20:44 Der er 16 kommentarer og
1 løsning

Java: fejl i NetBeans?

Jeg sidder og forsøger at lave en GUI-applikation i NetBeans.

Jeg har lavet to textfields kaldet tInt1 og tInt2. Det er planen at disse skal indeholde tal.

Jeg har nu lavet en metode calculate, med følgende:

    private void calculate() {
        int result = tInt1.getText()+tInt2.getText()
        tResult.setText(result);
    }

tResult er et textfielt som skulle indeholde resultatet af min udregning.

Når jeg forsøger at køre dette, får jeg en kompiler fejl:

found  : java.lang.String
required: int
        int result = tInt1.getText()+tInt2.getText();
/home/dennis/java/Halloworld/src/Halloworld.java:112: setText(java.lang.String) in javax.swing.text.JTextComponent cannot be applied to (int)
        tResult.setText(result);

Nogen der kan hjælpe mig videre? Er klar over at problemet opstår fordi jeg forsøger at ligge to stringe sammen til et int. Men hvordan gør man det? :) Kan jeg evt. angive at det der bliver indtastet i textfield er int istedet for string?
Avatar billede arne_v Ekspert
07. september 2006 - 21:53 #1
prøv:

        int result = Integer.parseInt(tInt1.getText())+Integer.parseInt(tInt2.getText());
        tResult.setText(Integer.toString(result));
Avatar billede dennism Nybegynder
07. september 2006 - 22:02 #2
Tak skal du have - smider du lige et svar? ;)
Hvilken metode skal man køre, for at lukke en frame og dermed afslutte programmet?
Avatar billede arne_v Ekspert
07. september 2006 - 22:08 #3
svar

prøv at put

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

i din klasses constructor (jeg antager at du bruger Swing og ikke AWT)
Avatar billede dennism Nybegynder
07. september 2006 - 22:14 #4
Tak, det vil jeg prøve :)

Hvorfor kan jeg iøvrigt ikke:
jLabel1.setText(jComboBox1.getText());

Findes metoden getText ikke på en ComboBox? Hvis ikke, hvordan får jeg så værdien ud af den?
Avatar billede arne_v Ekspert
07. september 2006 - 22:17 #5
Avatar billede dennism Nybegynder
07. september 2006 - 22:17 #6
Jeg er med på hvad den linie gør, men jeg vil gerne have en metode som jeg kan kalde, således at applikationen bliver afsluttet. Har nemlig lave en menu der hedder "exit" - programmet skulle jo gerne lukkes, når jeg trykker på denne :)
Avatar billede dennism Nybegynder
07. september 2006 - 22:19 #7
Jeg har denne kode:
jLabel1.setText(jComboBox1.getSelectedItem());

Den giver denne fejl:
/home/dennis/java/Halloworld/src/Halloworld.java:144: setText(java.lang.String) in javax.swing.JLabel cannot be applied to (java.lang.Object)
        jLabel1.setText(jComboBox1.getSelectedItem());

Er det fordi getSelectedItem ikke returnerer en String?
Avatar billede arne_v Ekspert
07. september 2006 - 22:21 #8
System.exit(0)

kald evt dispose på din JFrame først
Avatar billede arne_v Ekspert
07. september 2006 - 22:22 #9
ja
Avatar billede dennism Nybegynder
07. september 2006 - 22:28 #10
Tak.

Problemet er, at den ikke vil compile denne switch:

        switch (jComboBox1.getSelectedItem()) {
            case "+": int result = Integer.parseInt(tInt1.getText())+Integer.parseInt(tInt2.getText());
            case "-": int result = Integer.parseInt(tInt1.getText())-Integer.parseInt(tInt2.getText());
            case "*": int result = Integer.parseInt(tInt1.getText())*Integer.parseInt(tInt2.getText());
            case "/": int result = Integer.parseInt(tInt1.getText())/Integer.parseInt(tInt2.getText());
        }

Kan du hurtigt se, hvad der er galt med den?
Avatar billede dennism Nybegynder
07. september 2006 - 22:32 #11
Har smidt lidt flere point i dette spørgsmål.

Måske du også kan hjælpe her:
http://www.eksperten.dk/spm/731014
Avatar billede arne_v Ekspert
07. september 2006 - 22:40 #12
prøv:

        switch (((String)jComboBox1.getSelectedItem()).charAt(0)) {
            case '+': int result = Integer.parseInt(tInt1.getText())+Integer.parseInt(tInt2.getText());
            case '-': int result = Integer.parseInt(tInt1.getText())-Integer.parseInt(tInt2.getText());
            case '*': int result = Integer.parseInt(tInt1.getText())*Integer.parseInt(tInt2.getText());
            case '/': int result = Integer.parseInt(tInt1.getText())/Integer.parseInt(tInt2.getText());
        }
Avatar billede arne_v Ekspert
07. september 2006 - 22:40 #13
overvej evt. at flytte de type konverteringer udenfor switchen !
Avatar billede arne_v Ekspert
07. september 2006 - 22:40 #14
med hensyn til det andet spørgsmål, så bruger jeg ikke selv NetBeans, men
det er der andre brugere som gør
Avatar billede dennism Nybegynder
09. september 2006 - 11:09 #15
Jeg har nu denne switch-sætning:

        switch (((String)jComboBox1.getSelectedItem()).charAt(0)) {
            case '+': result = int1+int2;
            case '-': result = int1-int2;
            case '*': result = int1*int2;
            case '/': result = int1/int2;
            default: result = 0;
        }

Mit problem er, at uanset hvad så bruger den altid default-løsningen :(
Jeg har i jComboBox1 sat "model" til "+, -, *, /". Deres værdi skal måske angives et andet sted?
Avatar billede arne_v Ekspert
09. september 2006 - 21:21 #16
du mangler break's !!
Avatar billede dennism Nybegynder
10. september 2006 - 20:32 #17
Tak ;)
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