Avatar billede e_petersen Nybegynder
09. maj 2006 - 15:16 Der er 3 kommentarer

ikoner på buttons. Jeg kan ikke få hæftet dem på knapperne

Løbet ind i et par problemer med at sætte billeder på dropdown knapperne.

Kunne Tænke mig at soeg.gif blev sat på knappen med string label "Søg", i stedet for at den almindelige knap blev vist. - Jeg kan sagtens vise en alm. ikon knap men ikke klistre ikoner på de eksisterende knapper... grrrr.

Ydermere er jeg ikke helt med på hvorfor ikon knappen bliver skåret af hvis vinduet resizes, dvs gøres smallere men stadig er højt nok til at knapperne teoretisk kunne ligge oven på hinanden... Det er som om der er en usynlig streg under de almindelige buttons hvorunder intet kan vises. (prøv at resize bredden af vinduet og læg et gif på ca 125x72 i det relevante directory så kan du se hvad jeg mener).

Sidst men ikke mindst ville det være rart hvis der var nogen der havde en ide til hvor de konkrete action events f.eks. en System.out.println("varenavn"); og for "Forhandlernavn", skal sættes ind for de enkelte punkter på dropdown listen.

Koden for de to klasser der er 90-98% tæt på at gøre hvad de skal følger her:

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

public abstract class PopupButton extends Button implements ActionListener
{
    private PopupMenu popup;

    protected PopupButton(String[] items, Container parent)
    {
        this("",items, parent);
    }

    protected PopupButton(String label, String[] items, Container parent)
    {
        super(label);

        popup = new PopupMenu();

        MenuItem menuItems[] = new MenuItem[items.length];

        for(int i = 0; i < items.length; i++)
        {
            menuItems[i] = new MenuItem(items[i]);
            menuItems[i].addActionListener(this);
            popup.add(menuItems[i]);
        }

        parent.add(popup);

        addActionListener(new ActionListener()
                          {
                              public void actionPerformed(ActionEvent evt)
                              {
                                  popup.show(PopupButton.this, 0, PopupButton.this.getSize().height);
                              }
                          }
                        );
    }
}




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

public class PopupButtonImplementation {
public static void main(String args[]) {
  new PopupButtonImplementationFrame();
}
}

class PopupButtonImplementationFrame extends Frame {
Panel panel = new Panel();


MyPopupButton mpb1 = new MyPopupButton("Opret",new String[]{"Opret vare","-","Opret forhandler"},this);
MyPopupButton mpb2 = new MyPopupButton("Søg",new String[]{"Vare","-","Forhandler"},this);
MyPopupButton mpb3 = new MyPopupButton("Administrer brugere",new String[]{"Opret ny bruger","-","Rediger bruger","-", "Slet bruger"},this);
MyPopupButton yay = new MyPopupButton("Administrer webshop",new String[]{"Upload en vare","-","Upload alle varer","-", "Slet vare", "-","Slet alle varer"},this);

JButton btn1 = new JButton(new ImageIcon("images/soeg.gif"));



PopupButtonImplementationFrame() {
  super();

  /* Add the window listener */
  addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent evt) {
    dispose(); System.exit(0);}});

  /* Size the frame */
  setSize(600,200);


  // Center the frame 
  Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
  Rectangle frameDim = getBounds();
  setLocation((screenDim.width - frameDim.width) / 2,(screenDim.height - frameDim.height) / 2);

 
  panel.add(mpb1);
  panel.add(mpb2);
  panel.add(mpb3);
 
  panel.add(yay);
  panel.add(btn1);
 
  add(BorderLayout.NORTH,panel);

  /* Show the frame */

  setVisible(true);
}
}

class MyPopupButton extends PopupButton
{
public MyPopupButton(String label, String[] items, Container parent)
{
  super(label,items,parent);
}

public void actionPerformed(ActionEvent evt)
{
  String command = evt.getActionCommand();
 
}}

*******************
Det ville være fantastisk hvis nogen har en ide.
Avatar billede e_petersen Nybegynder
10. maj 2006 - 19:54 #1
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;

public class YesNoToDelete extends javax.swing.JFrame implements ActionListener {

    private JPanel panel1, panel2, panel3, panel4;
   
    private JButton yes = new JButton(new ImageIcon("images\\soeg.gif"));
   

   
   
    private JButton no = new JButton("Nej");
     
        private JPopupMenu  popupMenu;

public YesNoToDelete() {

        super("Er du sikker....");
        setSize(500, 200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JPanel pane = new JPanel();
       
        JLabel questionLabel = new JLabel("Er du sikker på at du vil slette medlemmet?");     
        JPanel panel1 = new JPanel();
        panel1.add(questionLabel);
        pane.add(panel1);
       
        JPanel panel3 = new JPanel();
        yes.setBackground(Color.WHITE);
        yes.setBorder(new LineBorder(Color.WHITE, 1));
        //JPopupMenu exitItem = new JPopupMenu("Exit");
    //btn1.add(exitItem);
       
        panel3.add(yes);
        yes.addActionListener(this);
       
        pane.add(panel3);
       
        JPanel panel4 = new JPanel();
        panel4.add(no);
        no.addActionListener(this);
        pane.add(panel4); 
             
        setContentPane(pane);
        setVisible(true);
 
       
       
final JPopupMenu popupMenu = new JPopupMenu();

    // Søg vare
    JMenuItem soegVareMenuItem = new JMenuItem("Søg vare");
    soegVareMenuItem.addActionListener(this);
    popupMenu.add(soegVareMenuItem);

   
    // Separator
    popupMenu.addSeparator();
   
    // Søg forhandler
    JMenuItem soegForhandlerMenuItem = new JMenuItem("Søg forhandler");
    soegForhandlerMenuItem.addActionListener(this);
    popupMenu.add(soegForhandlerMenuItem);

 

    yes.setComponentPopupMenu(popupMenu);

   

}

    public static void main(String[] arguments) {
        YesNoToDelete deleteitornot = new YesNoToDelete();
    }
   
      public void actionPerformed(ActionEvent evt)
      {
    Object source = evt.getSource();
{
   
    if (source == yes) {
      // Yes button was pressed: DELETE MEMBER


     
     
        /*  try{
       
       
          // create a robot to feed in GUI events
   
            Robot rob = new Robot();
            // move cursor
            Point p = yes.getLocationOnScreen();
            rob.mouseMove(p.x+1, p.y+1);
         
           
   
           
   
            rob.mousePress(InputEvent.BUTTON1_MASK);
            rob.mouseRelease(InputEvent.BUTTON1_MASK);
    } catch(Exception e) {e.printStackTrace();}

  */
    System.out.println("Damn det her virker ikke");

   
    } else if (source == no) {
      // Exit button was pressed
    dispose();
    }
   
   
}
 
}
    }
Avatar billede e_petersen Nybegynder
10. maj 2006 - 19:59 #2
Det sidste eksempel virker bortset fra at der skulle have stået BUTTON3_MASK i stedet for

der er også stadig andre finjusteringer på vej
Avatar billede e_petersen Nybegynder
10. maj 2006 - 19:59 #3
Og så skal robot heller ikke være udkommenteret ;o)
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