ورود

View Full Version : ساخت کامپوننت و مشکل با popupmenu



trustmiracle
شنبه 19 بهمن 1387, 22:32 عصر
سلام
من می خوام یه کامپوننت بسازم که یه دکمه باشه وقتی روش کلیک می کنی یه popupmenu رو نشون بده وقتی هم که موس از روی popupmenu خارج میشه اون هم مخفی بشه.
ولی هر کاری می کنم درست کار نمی کنه . بی زحمت یه نگاهی بهش بندازید.
یه خاصیت pmenuitem هم داره که وقتی کامپوننت رو انداختین روی فرم باید یه popupmenu بهش بدید.

mm2236
جمعه 25 بهمن 1387, 14:15 عصر
سلام دوست عزیز



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

class menu extends JFrame implements MouseListener {
JLabel l=new JLabel("Please Right Click");
JPopupMenu pum=new JPopupMenu();
JMenuItem item1 =new JMenuItem("Sample 1");
JMenuItem item2 =new JMenuItem("Sample 2");
menu(){
Container c=getContentPane();
c.setLayout(new FlowLayout());
addMouseListener(this);
pum.add(item1);
pum.add(item2);
c.add(l,BorderLayout.NORTH);
c.add(pum,BorderLayout.CENTER);
}
public static void main(String[] args) {
menu mk=new menu();
mk.setSize(300,300);
mk.setVisible(true);
mk.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void mouseClicked(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()){
pum.show(this,e.getX(),e.getY());
}
}
public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}
}

trustmiracle
دوشنبه 28 بهمن 1387, 16:25 عصر
ممنون
ولی اینکه اصلا کار نمی کنه
یعنی فرم اجرا میشه ولی وقتی راست کلیک می کنم هیچی نمیشه

Omid1366
سه شنبه 29 بهمن 1387, 20:11 عصر
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;


public class JMain extends JFrame {

private final JDesktopPane desktopPane = new JDesktopPane();
private final JButton clickButton = new JButton();
private final JPopupMenu popupMenu = new JPopupMenu();
private final JMenuItem newItemMenuItem = new JMenuItem();
private final JMenuItem newItemMenuItem_1 = new JMenuItem();
private final JMenuItem newItemMenuItem_2 = new JMenuItem();
private final JMenuItem newItemMenuItem_3 = new JMenuItem();
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
JMain frame = new JMain();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Create the frame
*/
public JMain() {
super();
setBounds(100, 100, 636, 513);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
//
}
private void jbInit() throws Exception {

getContentPane().add(desktopPane, BorderLayout.CENTER);

desktopPane.add(clickButton);
clickButton.addActionListener(new ClickButtonActionListener());
clickButton.setText("Click");
clickButton.setBounds(261, 193, 106, 26);

addPopup(desktopPane, popupMenu);
popupMenu.addMouseListener(new PopupMenuMouseListener());
popupMenu.setBounds(0, 0, 57, 16);

popupMenu.add(newItemMenuItem);
newItemMenuItem.setText("New");

popupMenu.add(newItemMenuItem_1);
newItemMenuItem_1.setText("Open");

popupMenu.add(newItemMenuItem_2);
newItemMenuItem_2.setText("Save");

popupMenu.add(newItemMenuItem_3);
newItemMenuItem_3.setText("Exit");
}

/**
* WindowBuilder generated method.<br>
* Please don't remove this method or its invocations.<br>
* It used by WindowBuilder to associate the {@link javax.swing.JPopupMenu} with parent.
*/
private static void addPopup(Component component, final JPopupMenu popup) {
component.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
showMenu(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
showMenu(e);
}
private void showMenu(MouseEvent e) {
popup.show(e.getComponent(), e.getX(), e.getY());
}
});
}
private class ClickButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
clickButton_actionPerformed(e);
}
}
private class PopupMenuMouseListener extends MouseAdapter {
public void mouseExited(MouseEvent e) {
popupMenu_mouseExited(e);
}
}
protected void clickButton_actionPerformed(ActionEvent e) {
popupMenu.show(clickButton,(int)clickButton.getAli gnmentX(),(int)clickButton.getAlignmentY());
}
protected void popupMenu_mouseExited(MouseEvent e) {
popupMenu.setVisible(false);
}
}