GVKun编程网logo

learning java AWT 右键菜单(java右键菜单怎么加)

21

如果您对learningjavaAWT右键菜单和java右键菜单怎么加感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解learningjavaAWT右键菜单的各种细节,并对java右键菜单怎么加

如果您对learning java AWT 右键菜单java右键菜单怎么加感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解learning java AWT 右键菜单的各种细节,并对java右键菜单怎么加进行深入的分析,此外还有关于Java JTextArea右键菜单、java-LearningRxjava-ch01-Thinking Reactively、java.awt.Rectangle java.awt.geom.Ellipse2D java.awt.Polygon、Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别的实用技巧。

本文目录一览:

learning java AWT 右键菜单(java右键菜单怎么加)

learning java AWT 右键菜单(java右键菜单怎么加)

import java.awt.*;
import java.awt.event.*;

public class SimpleMenu {
    private Frame f  = new Frame("test");
    private MenuBar mb = new MenuBar();
    Menu file  =  new Menu("file");
    Menu edit  =  new Menu("edit");

    PopupMenu pop = new PopupMenu();

    MenuItem crateItem = new MenuItem("create");
    MenuItem saveItem = new MenuItem("save");

    MenuItem exitItem = new MenuItem("exit",new MenuShortcut(KeyEvent.VK_X));

    CheckBoxMenuItem autoWrap = new CheckBoxMenuItem("autoWrap");

    MenuItem copyItem = new MenuItem("copy");
    MenuItem pasteItem = new MenuItem("paste");

    Menu format =  new Menu("format");
    /*ctrl + shift + / */
    MenuItem commentItem = new MenuItem("comment",new MenuShortcut(KeyEvent.VK_SLASH,true));

    MenuItem cancelItem = new MenuItem("cancelComment");
    private TextArea ta = new TextArea(6,40);

    public void init(){
        ActionListener menuListener = e -> {
          var cmd = e.getActionCommand();
          ta.append(" click " + cmd + " menu " + " \n ");
          if(cmd.equals("exit")){
              System.exit(0);
          }
        };

        commentItem.addActionListener(menuListener);
        exitItem.addActionListener(menuListener);

        pop.add(autoWrap);
        pop.addSeparator();
        pop.add(copyItem);
        pop.add(pasteItem);

        pop.add(new MenuItem("-"));
        pop.add(format);

        final Panel p = new Panel();
        p.setPreferredSize(new Dimension(300,160));
        p.add(pop);
        p.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                if (e.isPopupTrigger()){
                    pop.show(p,e.getX(),e.getY());
                }
            }
        });

//        file.add(crateItem);
//        file.add(saveItem);
//        file.add(exitItem);
//
//        edit.add(autoWrap);
//        edit.addSeparator();
//        edit.add(copyItem);
//        edit.add(pasteItem);

        format.add(commentItem);
        format.add(cancelItem);

//        edit.add(new MenuItem("-"));
//        edit.add(format);


//
//        mb.add(file);
//        mb.add(edit);

        f.add(p);


        f.setMenuBar(mb);
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        f.add(ta,BorderLayout.norTH);
        f.pack();
        f.setVisible(true);

    }

    public static void main(String[] args) {
        new SimpleMenu().init();
    }


}

output:

分享图片

Java JTextArea右键菜单

Java JTextArea右键菜单

class Rightclickmenu extends JTextArea implements MouseListener {
    private static final long serialVersionUID = -2308615404205560110L;
    private JPopupMenu pop = null; // 弹出菜单
    private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单
    public Rightclickmenu() {
        super();
        init();
    }
    private void init() {
        this.addMouseListener(this);
        pop = new JPopupMenu();
        pop.add(copy = new JMenuItem("复制"));
        pop.add(paste = new JMenuItem("粘贴"));
        pop.add(cut = new JMenuItem("剪切"));
        copy.setAccelerator(KeyStroke.getKeyStroke(''C'', InputEvent.CTRL_MASK));
        paste.setAccelerator(KeyStroke.getKeyStroke(''V'', InputEvent.CTRL_MASK));
        cut.setAccelerator(KeyStroke.getKeyStroke(''X'', InputEvent.CTRL_MASK));
        copy.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                action(e);
            }
        });
        paste.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                action(e);
            }
        });
        cut.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                action(e);
            }
        });
        this.add(pop);
    }

    public void action(ActionEvent e) {
        String str = e.getActionCommand();
        if (str.equals(copy.getText())) { // 复制
            this.copy();
        } else if (str.equals(paste.getText())) { // 粘贴
            this.paste();
        } else if (str.equals(cut.getText())) { // 剪切
            this.cut();
        }
    }
    public JPopupMenu getPop() {
        return pop;
    }
    public void setPop(JPopupMenu pop) {
        this.pop = pop;
    }

    public boolean isClipboardString() {
        boolean b = false;
        Clipboard clipboard = this.getToolkit().getSystemClipboard();
        Transferable content = clipboard.getContents(this);
        try {
            if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
                b = true;
            }
        } catch (Exception e) {
        }
        return b;
    }

    public boolean isCanCopy() {
        boolean b = false;
        int start = this.getSelectionStart();
        int end = this.getSelectionEnd();
        if (start != end)
            b = true;
        return b;
    }
    public void mouseClicked(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    public void mousePressed(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON3) {
            copy.setEnabled(isCanCopy());
            paste.setEnabled(isClipboardString());
            cut.setEnabled(isCanCopy());
            pop.show(this, e.getX(), e.getY());
        }
    }
    public void mouseReleased(MouseEvent e) {
    }
}

 

java-LearningRxjava-ch01-Thinking Reactively

java-LearningRxjava-ch01-Thinking Reactively

前言
公司用到rxjava,学习Learning-Rxjava笔记
本书源码位置:https://github.com/PacktPubli...

1.A brief history of ReactiveX and RxJava

作为程序员,我们的工作是Modeling our world with code,object-oriented programming 很好地抽象我们的世界,但是,As 2010 approached, it became clear that object-oriented programming only solved part of the problem.

Classes and objects do a great job of representing an entity with properties and methods,但是各个entity 之间的复杂关系的抽象,使得面向对象编程有很多模板化的代码,十分臃肿,此时,functional programming卷土重来,作为object-oriented的一个补充。Reactive
programming, a functional event-driven programming approach, began to receive special attention.微软的Erik Meijer 为.net写了一个 Reactive Extensions的框架,后来其1.0Rx和2.0ReactiveX逐渐扩展到其它语言。

Netflix 公司的Ben Christensen 和 David Karnok 作为主要人员创作了rx-java.其中
RxJava 1.0 在2014年11月发布 , RxJava 2.0在2016年11月发布。

reactiveX的核心理念是:
The fundamental idea of ReactiveX is that events are data and data are events.

2.Thinking reactively

对象都是运动和变化的
比如天气。书本上的内容是静止不变的,但是,当读者看书时,书上的内容被读者的眼睛一点点消费,那么其内容也是变化的。也是
对象都是相互关联的
比如天气和人的行为。
对象的变化都是在同时(并行)的
比如马路上,机动车道上的汽车和非机动车道路上的人都是同时运行的。彼此还要相互观察。

所以可以使用 multiple concurrent streams of events or data happening at the same time 来modeling world

java.awt.Rectangle java.awt.geom.Ellipse2D java.awt.Polygon

java.awt.Rectangle java.awt.geom.Ellipse2D java.awt.Polygon

java.awt.Rectangle  java.awt.geom.Ellipse2D java.awt.Polygon

在平面2D的坐标计算中很有用

Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别

Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别

Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别,新的AWT克服了旧AWT的很多缺点,在设计上有较大改进,使用也更方便,这里主要介绍新的AWT, 但在Java1.1及以后版本中旧的AWT的程序也可运行。

 

 1 package TomAwt;
 2 
 3 
 4 import java.applet.Applet;
 5 import java.awt.*;
 6 public class TomAwt_04 extends Applet{
 7     public void init(){
 8     //set layout to grid layout with 3 rows and 3 columns
 9         setLayout(new GridLayout(3,3));
10     //add eight buttons to applet
11         for(int i=1;i<=8;i++){
12             add(new Button("Button" + i));
13         }
14     }
15 }

 

今天关于learning java AWT 右键菜单java右键菜单怎么加的分享就到这里,希望大家有所收获,若想了解更多关于Java JTextArea右键菜单、java-LearningRxjava-ch01-Thinking Reactively、java.awt.Rectangle java.awt.geom.Ellipse2D java.awt.Polygon、Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别等相关知识,可以在本站进行查询。

本文标签: