Avatar billede flodhesten Nybegynder
25. september 2008 - 20:53 Der er 5 kommentarer og
1 løsning

Indtast navn, udskriv navn - hjælp til kode

Halløj.

Jeg har forsøgt at lave et javaprogram. Det fungerer sådan, at man skal indtaste sit navn i en boks, og så skulle navnet gerne vises bagefter. Her er min kode:

____________________

import java.awt.*;
import javax.swing.*;

public class Test extends JPanel {
   
    public Test() {
        JTextField navn = new JTextField();
        Object[] msg = {"Indtast dit navn: ", navn};
        JOptionPane op = new JOptionPane(msg, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, null);
        JDialog dialog = op.createDialog(this, "Boks");
        dialog.setVisible(true);
        int result = JOptionPane.OK_OPTION;
        try {
            result = ((Integer)op.getValue()).intValue();
        }
        catch(Exception uninitializedValue) {
        }
        if(result == JOptionPane.OK_OPTION)
        {           
            System.out.print(navn.getText());   
        }
    }

   
    public void TegnTekst(Graphics g, String a, int b, int c) {
        g.drawString(a, b, c);
    }
   
    public void paintComponent(Graphics g) {
        g.setColor(Color.BLUE);
        TegnTekst(g, "Hej",200,110);
        }
   
   
    public static void main(String[] arg) {
        Test panel = new Test();
        JFrame vindue = new JFrame("Grafikpanel");
        vindue.add(panel);
        vindue.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        vindue.setSize(400,200);
        vindue.setVisible(true);
  }

}

_______________


Jeg udskriver "Hej" når programmet åbnes som koden viser. Jeg vil frygtelig gerne have, at navn.getText() vises, altså det navn som brugeren har indtastet i stedet for. Jeg har dog ikke været i stand til at finde en løsning. Derfor spørger jeg jer til råds.

På forhånd tak.
Avatar billede _carsten Nybegynder
25. september 2008 - 22:26 #1
Her har jeg rodet lidt med med din kode, det bliver aldrig rigtig godt, så længere nede finder du et kort eksempel på en mulig løsning


import java.awt.*;
import javax.swing.*;

public class Test extends JPanel {

    public Test() {
        JFrame vindue = new JFrame("Grafikpanel");
        vindue.add(this);
        vindue.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        vindue.setSize(400,200);

        setLayout(new java.awt.FlowLayout());

        JTextField navn = new JTextField();
        JTextField navn_2 = new JTextField();
        navn_2.setColumns(10);
        this.add(navn_2);

        vindue.setVisible(true);


        Object[] msg = {"Indtast dit navn: ", navn};
        JOptionPane op = new JOptionPane(msg, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, null);
        JDialog dialog = op.createDialog(this, "Boks");




        dialog.setVisible(true);
        int result = JOptionPane.OK_OPTION;
        try {
            result = ((Integer)op.getValue()).intValue();
        }
        catch(Exception uninitializedValue) {
        }
        if(result == JOptionPane.OK_OPTION)
        {
            System.out.print(navn.getText());
            navn_2.setText(navn.getText());
        }

    }


    public void TegnTekst(Graphics g, String a, int b, int c) {
        g.drawString(a, b, c);
    }

    public void paintComponent(Graphics g) {
        g.setColor(Color.BLUE);
        TegnTekst(g, "Hej",200,110);
        }


    public static void main(String[] arg) {
        new Test();

  }

}








Den korte måde

import java.awt.*;
import javax.swing.*;

public class Test_2 extends JFrame {

    public Test_2() {
        JPanel panel = new JPanel();
        panel.setLayout(new java.awt.FlowLayout());

        JTextField navn_2 = new JTextField();
        navn_2.setColumns(15);
        panel.add(navn_2);

        this.add(panel);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setSize(400,200);
        this.setVisible(true);

        navn_2.setText(JOptionPane.showInputDialog(this, "Skriv dit navn"));
    }


    public static void main(String[] arg) {
        new Test_2();

      }
}
Avatar billede flodhesten Nybegynder
25. september 2008 - 22:51 #2
Jeg kan godt se at din løsning er bedre. Men hvordan er det så muligt at få udskrevet det input computeren får som en g.drawString? Som det står nu, er det jo i en slags input-felt.

Og hvad så hvis man forestiller sig at der er blevet indtastet et tal ind og jeg ønsker at tjekke noget på det.

Eksempelvis

if (tal < 1000) {
gør noget } else
{ gør noget andet }

Jeg regner menlig med, at jeg vil lave videre på det, således at det man skriver ind skal valideres.
Avatar billede _carsten Nybegynder
27. september 2008 - 10:38 #3
Eksempel

import java.awt.Graphics;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class NewJFrame extends javax.swing.JFrame {
    private MyPanel panel;

    public NewJFrame() {
        panel = new MyPanel();
        getContentPane().add(panel);
        setSize(400,400);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
       
        pack();
        setVisible(true);
       
        input();
    }

    private void input(){
      String s = JOptionPane.showInputDialog(this, "Skriv et tal") ;
     
      // Tjek tallet her
     
      panel.setString(s);
    }

   
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
}






class MyPanel extends JPanel{
    private String str ="";
   
    public MyPanel(){
    }
   
    public void setString(String s){
        this.str = s;
        repaint();
    }
   
    public void paintComponent(Graphics g){
        g.drawString(str, 50, 50);
    }
}Eksempel

import java.awt.Graphics;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class NewJFrame extends javax.swing.JFrame {
    private MyPanel panel;

    public NewJFrame() {
        panel = new MyPanel();
        getContentPane().add(panel);
        setSize(400,400);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
       
        pack();
        setVisible(true);
       
        input();
    }

    private void input(){
      String s = JOptionPane.showInputDialog(this, "Skriv et tal") ;
     
      // Tjek tallet her
     
      panel.setString(s);
    }

   
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
}






class MyPanel extends JPanel{
    private String str ="";
   
    public MyPanel(){
    }
   
    public void setString(String s){
        this.str = s;
        repaint();
    }
   
    public void paintComponent(Graphics g){
        g.drawString(str, 50, 50);
    }
}
Avatar billede _carsten Nybegynder
27. september 2008 - 10:39 #4
Hov den fik jeg sat ind 2 gange, det er nok nemmere at se her

Eksempel

import java.awt.Graphics;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class NewJFrame extends javax.swing.JFrame {
    private MyPanel panel;

    public NewJFrame() {
        panel = new MyPanel();
        getContentPane().add(panel);
        setSize(400,400);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
       
        pack();
        setVisible(true);
       
        input();
    }

    private void input(){
      String s = JOptionPane.showInputDialog(this, "Skriv et tal") ;
     
      // Tjek tallet her
     
      panel.setString(s);
    }

   
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
}






class MyPanel extends JPanel{
    private String str ="";
   
    public MyPanel(){
    }
   
    public void setString(String s){
        this.str = s;
        repaint();
    }
   
    public void paintComponent(Graphics g){
        g.drawString(str, 50, 50);
    }
}
Avatar billede flodhesten Nybegynder
27. september 2008 - 10:49 #5
Fornemt! Tak for hjælpen.

Post et svar :)
Avatar billede _carsten Nybegynder
27. september 2008 - 11:12 #6
Svar
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