Gå til innhold

Bilder og andre objekter i en applet


Anbefalte innlegg

Jeg har en applet med en JButton, JTextField og JTextArea. Jeg vil legge til et bilde, men får det ikke til. Jeg har lest litt om bilder forskjellge steder, men har ikke klart å finne ut av det. Er det noen som har noen tips?

 

import java.util.Random;

import java.util.Random;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 

public class GangetestApplet extends JApplet implements ActionListener{

 

JButton start;

JTextField textfield;

JTextArea textarea;

Container Panel;

LayoutManager Layout;

 

public GangetestApplet(){

start = new JButton("Start");

textfield = new JTextField(20);

textarea = new JTextArea(15,20);

Layout = new FlowLayout();

Panel = getContentPane();

start.addActionListener(this);

textarea.setEditable(false);

Panel.setLayout (Layout);

Panel.add(start);

Panel.add(textfield);

Panel.add(textarea);

Panel.setBackground (Color.green);

}

public void actionPerformed(ActionEvent e){

new Gangetest(textfield, textarea);

}

}

 

class Gangetest implements ActionListener{

 

int x, y, svar, riktig;

int delay = 30000;

Random r;

Timer timer;

ActionListener listener;

JTextField textfield;

JTextArea textarea;

String string1, string2;

 

Gangetest(JTextField textfield, JTextArea textarea){

this.textfield = textfield;

this.textarea = textarea;

textfield.setText("");

textarea.setText("");

timer = new Timer(delay,listener);

timer.addActionListener(this);

textfield.addActionListener(this);

r = new Random();

timer.restart();

gangetest(0,0);

}

 

public void gangetest(int xx, int yy){

 

do{

x = tilfeldigHeltall();

}while(x == xx);

do{

y = tilfeldigHeltall();

}while(y == yy);

textfield.setText(" " + x + " * " + y + " = ");

string1 = textfield.getText();;

textfield.grabFocus();

//textfield.setEditable(true);//Virker ikke

}

 

public int tilfeldigHeltall(){

int t = r.nextInt(8)+2;

return t;

}

 

public void actionPerformed(ActionEvent e){

 

if(e.getSource()== timer){

timer.stop();

textarea.append("\nDu hadde " + riktig + " riktige");

 

}else if(timer.isRunning()){

String reply;

string2 = textfield.getText();

textarea.append(string2);

reply = string2.substring(string1.length());

if(x * y == Integer.parseInt(reply)){

textarea.append(" RIKTIG!\n");

riktig++;

gangetest(x,y);

}else{

textarea.append(" FEIL!\n");

textfield.setText(string1);//Brukeren må gi riktig svar på hvert regnestykke!

}

//textfield.setEditable(false);//Virker ikke

}

}

}

}

 

Jeg hadde vist lagt inn feil kode, nå er det rettet. Koden ovenfor fungerer etter hensikten, men så vil jeg som sagt få lagt inn et bilde.

Endret av PelleP
Lenke til kommentar
Videoannonse
Annonse
Mulig første treff på google kan være verdt en titt?

http://java.ittoolbox.com/documents/displa...in-jpanel-12876

Som sagt så har jeg søkt på og lest en del på nettet allerede, i tillegg til at jeg har lest i de to bøkene jeg har. Jeg har brukt bilder i applikasjoner før og fått det til å fungere. Det er heller ikke vanskelig å lage en applet som viser et bilde. Jeg har imidlertid ikke funnet noe eksempel på en applet hvor bilder blir kombinert med andre objekter. Såvidt jeg forstår så benyttes det andre metoder i appleter enn i appllkasjoner?

 

Jeg regner med at jeg må tegne bildet i en beholder av et elle annet slag og så legge beholderen i Appleten. Jeg har forsøkt på forskjellige måter, men får det ikke til. Veldig takknæmlig om noen kan gi meg et dytt i riktig retning.

Endret av PelleP
Lenke til kommentar

Jeg fikk det til! Koden ligger nedenfor dersom noen skulle være interessert.

 

import java.util.Random;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.net.URL;

 

 

public class GangetestApplet extends JApplet implements ActionListener{

 

JButton start;

JTextField textfield;

JTextArea textarea;

Container Panel;

LayoutManager Layout;

Bildepanel bildepanel;

 

public GangetestApplet(){

start = new JButton("Start");

textfield = new JTextField(20);

textarea = new JTextArea(15,20);

Layout = new FlowLayout();

bildepanel = new Bildepanel();

Panel = getContentPane();

 

start.addActionListener(this);

textarea.setEditable(false);

Panel.setLayout (Layout);

Panel.add(start);

Panel.add(textfield);

Panel.add(textarea);

getContentPane().add(bildepanel);

//Panel.add(bildepanel);

Panel.setBackground (Color.MAGENTA);

}

public void actionPerformed(ActionEvent e){

new Gangetest(textfield, textarea);

}

}

class Bildepanel extends JPanel{

private ImageIcon bilde;

 

public Bildepanel(){

URL kilde = Bildepanel.class.getResource("Numerical.jpg");

bilde = new ImageIcon(kilde);

}

 

public void paintComponent(Graphics g){

super.paintComponent(g);

 

if (bilde != null){

bilde.paintIcon(this, g, 0, 0);

}else

g.drawString( "Fant ikke bildet!", 10, 50 );

}

 

public Dimension getPreferredSize(){

if (bilde != null)

return new Dimension(bilde.getIconWidth(), bilde.getIconHeight());

else

return new Dimension( 200, 100 );

}

 

}

 

 

class Gangetest implements ActionListener{

 

int x, y, svar, riktig;

int delay = 30000;

Random r;

Timer timer;

ActionListener listener;

JTextField textfield;

JTextArea textarea;

String string1, string2;

 

Gangetest(JTextField textfield, JTextArea textarea){

this.textfield = textfield;

this.textarea = textarea;

textfield.setText("");

textarea.setText("");

timer = new Timer(delay,listener);

timer.addActionListener(this);

textfield.addActionListener(this);

r = new Random();

timer.restart();

gangetest(0,0);

}

 

public void gangetest(int xx, int yy){

 

do{

x = tilfeldigHeltall();

}while(x == xx);

do{

y = tilfeldigHeltall();

}while(y == yy);

textfield.setText(" " + x + " * " + y + " = ");

string1 = textfield.getText();;

textfield.grabFocus();

//textfield.setEditable(true);//Virker ikke

}

 

public int tilfeldigHeltall(){

int t = r.nextInt(8)+2;

return t;

}

 

public void actionPerformed(ActionEvent e){

 

if(e.getSource()== timer){

timer.stop();

textarea.append("\nDu hadde " + riktig + " riktige");

 

}else if(timer.isRunning()){

String reply;

string2 = textfield.getText();

textarea.append(string2);

reply = string2.substring(string1.length());

if(x * y == Integer.parseInt(reply)){

textarea.append(" RIKTIG!\n");

riktig++;

gangetest(x,y);

}else{

textarea.append(" FEIL!\n");

textfield.setText(string1);//Brukeren må gi riktig svar på hvert regnestykke!

}

//textfield.setEditable(false);//Virker ikke

}

}

}

 

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...