我認(rèn)為應(yīng)該如此操作:(我是這樣做的)
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供加查網(wǎng)站建設(shè)、加查做網(wǎng)站、加查網(wǎng)站設(shè)計(jì)、加查網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、加查企業(yè)網(wǎng)站模板建站服務(wù),10余年加查做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、劃出類圖
2、做一個組件圖(選擇組建的屬性,將language選為java或其他的語言)
3、將組件圖拖到該組件所需要組裝的類圖的模型上(在樹形視圖中操作)
4、這樣,在選中類圖的模型點(diǎn)擊右鍵時,就會有java蔡單項(xiàng),在那里就可以生成java代碼。
希望這篇文章能幫各位兄弟省點(diǎn)時間。在java中使實(shí)現(xiàn)右鍵菜單十分簡單,只需用到一個控件:PopupMenu.
首先,需要聲明一個PopupMenu對像。
PopupMenu popupMenu1 = new PopupMenu();
然后新建一些子菜單,這里我們使用建立三個菜單項(xiàng)
MenuItem menuItem1 = new MenuItem();
MenuItem menuItem2 = new MenuItem();
MenuItem menuItem3 = new MenuItem();
然后再出初化,并加入監(jiān)聽事件中:
menuItem1.setLabel("菜單1");
menuItem1.addActionListener(new java.awt.event.ActionListener() { //菜單1的事件監(jiān)聽
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e); //菜單事件函數(shù)
}
});
menuItem2.setLabel("菜單2");
menuItem3.setLabel("菜單3");
popupMenu1.add(menuItem1);
popupMenu1.add(menuItem2);
popupMenu1.add(menuItem3);
//在this中加入popupMenu1
add(popupMenu1);
這時,菜單已經(jīng)加進(jìn)程序中了,現(xiàn)在我們需要做的就是在點(diǎn)擊右鍵時顯示。
先在init中加入鼠標(biāo)的單擊事件,
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
});
再在this_mousePressed(e);中將菜單顯示出來
void this_mousePressed(MouseEvent e) {
int mods=e.getModifiers();
//鼠標(biāo)右鍵
if((modsInputEvent.BUTTON3_MASK)!=0){
//彈出菜單
popupMenu1.show(this,e.getX(),e.getY());
}
}
//菜單1事件
void menuItem1_actionPerformed(ActionEvent e) {
//菜單事件1
}
好了,講到這里已經(jīng)全部結(jié)束,是不是非常簡單啊
這里有一個繼承Panel類的完整的例子
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Panel1 extends JPanel {
PopupMenu popupMenu1 = new PopupMenu();
MenuItem menuItem1 = new MenuItem();
MenuItem menuItem2 = new MenuItem();
MenuItem menuItem3 = new MenuItem();
public Panel1() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
this.setLayout(null);
menuItem1.setLabel("菜單1");
menuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
menuItem1_actionPerformed(e);
}
});
menuItem2.setLabel("菜單2");
menuItem3.setLabel("菜單3");
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
});
popupMenu1.add(menuItem1);
popupMenu1.add(menuItem2);
popupMenu1.add(menuItem3);
add(popupMenu1);
}
void this_mousePressed(MouseEvent e) {
int mods=e.getModifiers();
//鼠標(biāo)右鍵
if((modsInputEvent.BUTTON3_MASK)!=0){
//彈出菜單
popupMenu1.show(this,e.getX(),e.getY());
}
}
void menuItem1_actionPerformed(ActionEvent e) {
//菜單事件
}
}
好了,你試試看吧,這個還是我在遠(yuǎn)標(biāo)java那邊接觸到的知識點(diǎn)。
myeclipse編寫java代碼的步驟如下:
1.新建一個工程,取任意名字。
2.在工程目錄的src目錄下,創(chuàng)建一個java文件,如下圖,名字以小寫開頭,后跟字母數(shù)字或者下劃線。
3.打開剛才創(chuàng)建的java代碼,就可以進(jìn)行編寫代碼了。
在java.awt包中有兩個類可以用于彈出式菜單,PopupMenu(彈出式菜單),MenuItem(菜單項(xiàng)),
在 java.awt.event 包的MouseListener與MouseEvent 可用于鼠標(biāo)事件
下面是代碼(是從別的地方借用過來的,刪除了一些與此問題無關(guān)的內(nèi)容):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class PopupMenuDemo extends JFrame implements ActionListener
{
JButton btnTest=new JButton("Test");
JTextArea textArea=new JTextArea();
PopupMenu pMenu=new PopupMenu(); //創(chuàng)建彈出式菜單,下面三項(xiàng)是菜單項(xiàng)
MenuItem mItemCopy=new MenuItem("復(fù)制");
MenuItem mItemPaste=new MenuItem("粘貼");
MenuItem mItemCut=new MenuItem("剪切");
MouseAdapter mouseAdapter=new MouseAdapter()//監(jiān)聽鼠標(biāo)事件
{
public void mouseClicked(MouseEvent event)
{
if(event.getButton()==MouseEvent.BUTTON3)//只響應(yīng)鼠標(biāo)右鍵單擊事件
{
pMenu.show(textArea,event.getX(),event.getY());//在鼠標(biāo)位置顯示彈出式菜單
}
}
};
ActionListener menuAction=new ActionListener()//響應(yīng)單擊菜單項(xiàng)的事件,只是示例,
{//具體內(nèi)容可自己編寫
public void actionPerformed(ActionEvent e)
{
MenuItem item=(MenuItem)e.getSource();
if(item==mItemCopy) //單擊了“復(fù)制”菜單項(xiàng)
{
JOptionPane.showMessageDialog(null,"復(fù)制");
}
else if(item==mItemPaste) //“粘貼”菜單項(xiàng)
{
JOptionPane.showMessageDialog(null,"粘貼");
}
else
{
JOptionPane.showMessageDialog(null,"剪切"); //“剪切”菜單項(xiàng)
}
}
};
public PopupMenuDemo()
{
setTitle("Test");
setSize(300,300);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(btnTest,BorderLayout.NORTH);
add(textArea,BorderLayout.CENTER);
textArea.add(pMenu); //彈出式菜單加入到文本框中,否則不能顯示
textArea.addMouseListener(mouseAdapter); //文本框加入鼠標(biāo)監(jiān)聽器
pMenu.add(mItemCopy); //菜單項(xiàng)的單擊事件監(jiān)聽器
mItemCopy.addActionListener(menuAction);
pMenu.add(mItemPaste);
mItemPaste.addActionListener(menuAction);
pMenu.add(mItemCut);
mItemCut.addActionListener(menuAction);
btnTest.addActionListener(this);
}
public static void main(String... args)
{
new PopupMenuDemo().setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"測試功能");
}
}
使用Getter和Setter是實(shí)現(xiàn)面向?qū)ο笏枷氲闹匾徊糠帧?/p>
面向?qū)ο笕笠?,封裝,繼承,多態(tài)。
封裝就是把關(guān)聯(lián)緊密的部分當(dāng)成一個整體進(jìn)行操作。把很多屬性,都變成對象內(nèi)部的。
getter就是外部從對象內(nèi)部取出數(shù)據(jù),
setter就是外部向內(nèi)部輸入數(shù)據(jù)。
有一些外部對象是可以從對象內(nèi)部取數(shù)據(jù)的,但是不能往里面放數(shù)據(jù)。
有一些外部對象是可以向?qū)ο髢?nèi)部放數(shù)據(jù)的,但是不能取里面的數(shù)據(jù)。
我們可以通過Getter和Setter進(jìn)行控制。
就好像人體,有胃,有腸子。都是用來消化食物的。正常來說(不考慮某些變態(tài)),都是從嘴巴吃東西吧。雖然這些食物最后會到胃,腸子里,我們也不能直接開刀,往胃里放東西。
面向?qū)ο罄锏膶ο?,可以看成人。如果你要往里面放東西,必須調(diào)用Setter。不能把對象肢解了,放進(jìn)去。因?yàn)槲液苡锌赡芤獙δ愕臄?shù)據(jù)進(jìn)行加工之后,再存儲。你不能蠻干。
Getter也是,食物處理完了。變成便便。你要取出來,不能直接從腸子里拿出來把。還是得從屁屁出來吧。所以你只能按照我的規(guī)矩,用我給的方法,才能安全的對人體進(jìn)行操作。
上面說的好惡心啊……吐了……
所以面向?qū)ο螅↗ava就是典型的面向?qū)ο笳Z言)需要使用Setter Getter來取放數(shù)據(jù)。
總而言之,就是為了內(nèi)部的安全。同時也是給其他對象提供方便。因?yàn)槲也恍枰私饽愕墓ぷ鳈C(jī)制,不需要知道應(yīng)該把數(shù)據(jù)放到哪里,我直接調(diào)用你的Setter就可以了。
純手打,無抄襲。有問題可以追問。
標(biāo)題名稱:右鍵生成代碼java 鼠標(biāo)右鍵代碼
文章位置:http://aaarwkj.com/article10/docphgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、定制開發(fā)、企業(yè)建站、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)