Avatar billede thomaz Nybegynder
22. maj 2001 - 11:21 Der er 1 løsning

problemmer med at tegne et billede på et Panel!!!

Jeg har et problem med at tegne et billede på et Panel.
Når jeg tegner det, bliver det kun tegnet på Pane, og bliver derved gemt bag ved panelet!!

Er der noget der kan løse dette!


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.text.DecimalFormat;

// Class Opret_genstand
public class Opret_genstand extends Frame
{
    final int MenuBarHeight = 19;

    // Component Declaration
    public Button luk_knap;
    public Panel opret_genstand_panel;
    public FileDialog OpenDlg1;
    public Label opret_genstand_label;
    public Label varenavn_label;
    public Label beskrivelse_label;
    public Label mindste_pris_textfield;
    public Button indsaet_billede_knap;
    public TextField varenavn_textfield;
    public TextField dkr_textfield;
    public Label dkr_label;
    public TextArea beskrivelse_textarea;
    public Button ok_knap;
    public Label help_label;
    public Label billede_help_label;
    public MenuBar MenuBar1;
    public Menu MenuBar1Filer0;
    public Menu MenuBar1V_lg_Menu1;
    public Menu MenuBar1Funktioner2;
    public Menu MenuBar1Hj_lp3;
    public Label visbillede_label;
    // End of Component Declaration
   
        private File file;
        public Image FotoImage;
        public Image FotoImageTom;
        public String gif=\"Foto.gif\";
        public String tom=\"\";
        private int property;

    // Constructor
    public Opret_genstand()
    {
        // Frame Initialization
        setForeground(Color.black);
        setBackground(Color.lightGray);
        setFont(new Font(\"Dialog\",Font.BOLD,12));
        setTitle(\"OPRET GENSTAND\");
        setLayout(null);
        // End of Frame Initialization

        // Component Initialization
        luk_knap = new Button(\"LUK\");
        luk_knap.setFont(new Font(\"Dialog\",Font.BOLD,12));
        opret_genstand_panel = new Panel();
        opret_genstand_panel.setLayout(null);
        opret_genstand_panel.setForeground(Color.black);
        opret_genstand_panel.setBackground(Color.yellow);
        opret_genstand_panel.setFont(new Font(\"Dialog\",Font.BOLD,12));
        OpenDlg1 = new FileDialog(this);
        OpenDlg1.setTitle(\"Open\");
        OpenDlg1.setMode(FileDialog.LOAD);
        OpenDlg1.setDirectory(\"\");
        OpenDlg1.setFile(\"\");
        opret_genstand_label = new Label(\"OPRET GENSTAND\",Label.CENTER);
        opret_genstand_label.setFont(new Font(\"Dialog\",Font.BOLD + Font.ITALIC,20));
        varenavn_label = new Label(\"VARENAVN\",Label.LEFT);
        varenavn_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
        beskrivelse_label = new Label(\"BESKRIVELSE\",Label.LEFT);
        beskrivelse_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
        mindste_pris_textfield = new Label(\"MINDSTE PRIS\",Label.LEFT);
        mindste_pris_textfield.setFont(new Font(\"Dialog\",Font.BOLD,12));
        indsaet_billede_knap = new Button(\"INDSÆT BILLEDE\");
        indsaet_billede_knap.setFont(new Font(\"Dialog\",Font.BOLD,10));
        varenavn_textfield = new TextField(\"\");
        varenavn_textfield.setForeground(Color.black);
        varenavn_textfield.setBackground(Color.white);
        varenavn_textfield.setFont(new Font(\"Dialog\",Font.BOLD,12));
        dkr_textfield = new TextField(\"\");
        dkr_textfield.setForeground(Color.black);
        dkr_textfield.setBackground(Color.white);
        dkr_textfield.setFont(new Font(\"Dialog\",Font.BOLD,12));
        dkr_label = new Label(\"DKR\",Label.LEFT);
        dkr_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
        beskrivelse_textarea = new TextArea(\"\");
        beskrivelse_textarea.setForeground(Color.black);
        beskrivelse_textarea.setBackground(Color.white);
        beskrivelse_textarea.setFont(new Font(\"Dialog\",Font.BOLD,12));
        ok_knap = new Button(\"OPRET\");
        ok_knap.setFont(new Font(\"Dialog\",Font.BOLD,12));
        help_label = new Label(\"Når alt er indtastet trykkes på OPRET.\",Label.CENTER);
        help_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
        billede_help_label = new Label(\"(Kun hvis det ønskes)\",Label.CENTER);
        billede_help_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
        MenuBar1 = new MenuBar();
        MenuBar1Filer0 = new Menu(\"Filer\");
        MenuBar1.add(MenuBar1Filer0);
        MenuBar1V_lg_Menu1 = new Menu(\"Vælg Menu\");
        MenuBar1.add(MenuBar1V_lg_Menu1);
        MenuBar1Funktioner2 = new Menu(\"Funktioner\");
        MenuBar1.add(MenuBar1Funktioner2);
        MenuBar1Hj_lp3 = new Menu(\"Hjælp\");
        MenuBar1.add(MenuBar1Hj_lp3);
        setMenuBar(MenuBar1);
        visbillede_label = new Label(\"\", Label.LEFT);
        visbillede_label.setFont(new Font(\"Dialog\",Font.BOLD,12));
         
        // End of Component Initialization

        // Add()s
        opret_genstand_panel.add(visbillede_label);
        opret_genstand_panel.add(billede_help_label);
        add(help_label);
        add(ok_knap);
        opret_genstand_panel.add(beskrivelse_textarea);
        opret_genstand_panel.add(dkr_label);
        opret_genstand_panel.add(dkr_textfield);
        opret_genstand_panel.add(varenavn_textfield);
        opret_genstand_panel.add(indsaet_billede_knap);
        opret_genstand_panel.add(mindste_pris_textfield);
        opret_genstand_panel.add(beskrivelse_label);
        opret_genstand_panel.add(varenavn_label);
        opret_genstand_panel.add(opret_genstand_label);
        add(opret_genstand_panel);
        add(luk_knap);
        // End of Add()s
       
            FotoImage = Toolkit.getDefaultToolkit().getImage(gif);

        InitialPositionSet();

        ActionListener knapAktiv = new DirectionListener();
      luk_knap.addActionListener(knapAktiv);
    }

    public void InitialPositionSet()
    {
        // InitialPositionSet()
        reshape(257,99,593,534);
        luk_knap.reshape(457,473+MenuBarHeight,114,30);
        opret_genstand_panel.reshape(12,26+MenuBarHeight,562,437);
        opret_genstand_label.reshape(145,5,256,32);
        varenavn_label.reshape(119,65,95,19);
        beskrivelse_label.reshape(120,140,118,19);
        mindste_pris_textfield.reshape(120,232,129,19);
        indsaet_billede_knap.reshape(114,308,121,30);
        varenavn_textfield.reshape(266,64,186,27);
        dkr_textfield.reshape(267,229,84,27);
        dkr_label.reshape(371,234,52,19);
        beskrivelse_textarea.reshape(266,104,188,110);
        ok_knap.reshape(333,473+MenuBarHeight,114,30);
        help_label.reshape(22,479+MenuBarHeight,305,18);
        billede_help_label.reshape(86,343,176,19);
        visbillede_label.reshape(270,285,186,131);
        // End of InitialPositionSet()
    }

    public boolean handleEvent(Event evt)
    {
        // handleEvent()
        if (evt.id == Event.WINDOW_DESTROY && evt.target == this) Opret_genstand_WindowDestroy(evt.target);
      else if (evt.id == Event.ACTION_EVENT && evt.target == indsaet_billede_knap)indsaet_billede_knap_Action(evt.target);   
 
 
     
        // End of handleEvent()

        return super.handleEvent(evt);
    }

  /**********************************************************************/
    /* tegner billeder på guien    */
    /**********************************************************************/


    public void paint(Graphics g)
    {
       
      FotoImageTom = Toolkit.getDefaultToolkit().getImage(tom);
            FotoImage = Toolkit.getDefaultToolkit().getImage(gif);

        // paint()
        g.drawImage(FotoImageTom,560,152,143,135, this); 
        g.drawImage(FotoImage, 560,152,143,135, this);
        // End of paint()
    }
   
   
      /**********************************************************************/
    /* kalder funktionen openfile    */
    /**********************************************************************/

public void indsaet_billede_knap_Action(Object target)
      { 
           
              openFile();

      }
     
        /**********************************************************************/
    /* åbner en fil og ligger den i en variable    */
    /**********************************************************************/

   
  private void openFile()
  {     
      JFileChooser fileChooser = new JFileChooser();

      fileChooser.setFileSelectionMode(
        JFileChooser.FILES_ONLY );
      int result = fileChooser.showOpenDialog( this );

      if ( result == JFileChooser.CANCEL_OPTION )
        file = null;
      else
        {file = fileChooser.getSelectedFile();
          tom=\"tom.gif\";
          repaint();
          gif=file.toString();   
               
                repaint();
               
                }
     
  }

  // main()
  public static void main(String args[])
  {
      Opret_genstand Opret_genstand = new Opret_genstand();
      Opret_genstand.show();
  } // End of main()

    // Event Handling Routines
    public void Opret_genstand_WindowDestroy(Object target)
    {
        System.exit(0);
    }


     
        private class DirectionListener implements ActionListener
{    public void actionPerformed(ActionEvent e)
    {    Object knap = e.getSource();
        if (knap == luk_knap)
            {   
          System.exit(0);
            }

      }
}
    // End of Event Handling Routines

} // End of Class Opret_genstand
Avatar billede logical Nybegynder
22. maj 2001 - 11:30 #1
Nu har jeg ikke lyst til at kigge det hele igennem, men et godt råd er:

Lav en Canvas, hvor du tegner dit billede på, og læg det ind, hvor du gerne vil.
Canvas er en component, hvor du decideret skal overstyre paint metoden, så det er absolut det bedste valg.
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