如果您对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右键菜单怎么加)
- 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右键菜单怎么加)
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右键菜单
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
前言
公司用到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
在平面2D的坐标计算中很有用
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)有着很大的区别等相关知识,可以在本站进行查询。
本文标签: