/ Forside/ Teknologi / Udvikling / Java / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Ikoner på buttons
Fra : Einar_Petersen
Vist : 1861 gange
100 point
Dato : 09-05-06 15:09

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.

 
 
Kommentar
Fra : molokyle


Dato : 09-05-06 20:47
Kommentar
Fra : Einar_Petersen


Dato : 10-05-06 19:49

Fik ikke det helt store ud af at læse den tutorial kommer ikke rigtigt længere...

Har proppet et eksempel ind i en mindre klasse og kan få popup til at virke - men kun ved venstre klik med musen..... GRRRRRRR

Nogen ideer til hvordan jeg kan få menuen frem?

HER ER EKSEMPELKLASSEN:

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();
}


}

}
}



Kommentar
Fra : Einar_Petersen


Dato : 10-05-06 20:08

ovenforstående virker havde blot kørt i ring og brugt BUTTON1_ MASK og forsøgt med 2 men aldrig tre hvorefter det slog mig, jeg udkommenterede robots selvfølgelig også....


http://www-128.ibm.com/developerworks/java/library/j-tiger05124/?ca=dgr-SEOn-JDK_5.0-Popups

Kommentar
Fra : Einar_Petersen


Dato : 10-05-06 20:32

Det var der jeg fandt den bedste beskrivelse af popup menuer



Kommentar
Fra : sofus.dk


Dato : 10-05-06 20:57



Kommentar
Fra : molokyle


Dato : 10-05-06 22:15

Citat
Answer:

Passing a String to a JButton tries to load the image from a File.
You need to create an ImageIcon with URL and pass that into the constructor:

URL picURL = getClass().getResource("mypic.gif");
ImageIcon icon = new ImageIcon(picURL);
JButton button = new JButton(icon);

</MOLOKYLE>

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407831
Brugere : 218875

Månedens bedste
Årets bedste
Sidste års bedste