1、Java画线
1 import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel; class MyPanel extends JPanel {
public static final int MODE_LINE = 1;
public static final int MODE_POINT = 2;
//
private int drawMode = MODE_POINT; @Override
protected void paintComponent(Graphics g) {
// super.paintComponent(g); // g.setColor(Color.red);
// g.fillOval(10, 10, 100, 80);
drawSinAdapteSize(g); g.dispose();
} // 自适应的绘图方法
private void drawSinAdapteSize(Graphics g) {
g.setColor(Color.red);
int w = getWidth();
int h = getHeight(); int SCALE_X = (int) (w / (2 * Math.PI));
int SCALE_Y = h / 2 - 2;
int OFFSET = h / 2; Point start = new Point(0, OFFSET); for (int x = 1; x <= SCALE_X * 2 * Math.PI; x++) {
int y = OFFSET - (int) (SCALE_Y * Math.sin(x * 1.0 / SCALE_X)); // 根据属性,决定画线还是画点
if (drawMode == MODE_POINT) {
g.fillOval(x - 1, y - 1, 2, 2);
} else if (drawMode == MODE_LINE) {
g.drawLine(start.x, start.y, x, y); start.x = x;
start.y = y;
}
}
} public void setDrawMode(int mode) {
this.drawMode = mode;
} // 绘制制定大小的曲线
private void drawSin(Graphics g) {
g.setColor(Color.red);
// y = 220 - 200 * sin(x/100)
for (int x = 0; x <= 100 * 2 * Math.PI; x++) {
int y = 220 - (int) (200 * Math.sin(x / 100.0)); g.fillOval(x - 1, y - 1, 2, 2);
}
}
} public class DrawFrame extends JFrame implements ActionListener {
// 属性
MyPanel panel = null; // 方法
public DrawFrame() {
this.setTitle("绘图");
setSize(650, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null); panel = new MyPanel();
panel.setBackground(Color.LIGHT_GRAY); Container cp = getContentPane();
cp.add(panel); // JMenuBar
JMenuBar menuBar = new JMenuBar();
// JMenu
JMenu menu = new JMenu("Draw");
// JMenuItem
JMenuItem item = new JMenuItem("Line");
menu.add(item);
item.addActionListener(this); item = new JMenuItem("Point");
menu.add(item);
item.addActionListener(this); menuBar.add(menu);
this.setJMenuBar(menuBar);
} public static void main(String[] args) {
JFrame frame = new DrawFrame();
frame.setVisible(true);
} @Override
public void actionPerformed(ActionEvent event) {
String cmd = event.getActionCommand();
if ("Line".equals(cmd)) {
panel.setDrawMode(MyPanel.MODE_LINE);
} else if ("Point".equals(cmd)) {
panel.setDrawMode(MyPanel.MODE_POINT);
}
panel.repaint();
} }

2、Java菜单:

 import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane; public class MenuFrame extends JFrame implements ActionListener {
/**
* JMuneBar(菜单栏)中包含多项Jmenu(菜单),Jmenu下有多项JMenuItem(菜单项)
*/
public MenuFrame() {
this.setTitle("MenuFrame");
this.setSize(600, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
/**
* 由于失误,将所有的组件都用awt下的Menu,MenuItem,MenuBar来实现了,导致菜单中的汉字为乱码
*/
JMenuBar menuBar=new JMenuBar();
JMenu menu=new JMenu("File");
JMenuItem menuItem=new JMenuItem("新建");
JMenuItem exit=new JMenuItem("退出");
exit.addActionListener(this); JMenuItem about=new JMenuItem("关于...");
about.addActionListener(this);
menu.add(menuItem);
menu.add(exit);
menu.add(about);
menuBar.add(menu); menuBar.add(new JMenu("Edit")); this.setJMenuBar(menuBar);//注意最后要将菜单栏加到MenuFrame组件中去,不然菜单不可见
}
public static void main(String[] args) {
JFrame frame=new MenuFrame();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String cmd=e.getActionCommand();
if(cmd.equals("Exit")) {
dispose();
}else if(cmd.equals("About")) {
JOptionPane.showMessageDialog(null, "菜单演示系统");
}
}
}

Java中菜单的实现以及画实线与画虚线之间的自由转化的更多相关文章

  1. java中使用阻塞队列实现生产这与消费这之间的关系

    需求如下: 有一个生产者和一个消费者,生产者不断的生产产品,消费这不断的消费产品.产品总数为N. 1.生产顺序按队列的方式,先进先出. 2.生产者和消费这可以同时进行. 3.当生产者生产了N个产品后不 ...

  2. Java中long(Long)与int(Integer)之间的转换(转)

    一.将long型转化为int型,这里的long型是基础类型: long a = 10; int b = (int)a; 二.将Long型转换为int型,这里的Long型是包装类型: Long a = ...

  3. Java中int与Integer

    一般小写字母开头的是数据类型(如int double),大写字母开头的一般是封装为类(如Double),里面有很多方法,比如实行转换Integer.parseInt(arg0),可以把其他类型的数据转 ...

  4. Java中 int和Integer的区别+包装类

    --今天用Integer 和Integer 比较 发现有问题,于是去查了查. 1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Inget ...

  5. Java 中的 int 与 Integer 用于 List&lt;Integer&gt; 时,以及通过打印变量检測程序执行和函数调用次数计数

    总结一下近期做的东西中遇到的问题 1. Java 中的 int 与 Integer 用于 List<Integer>  时 两者之间的关系都是非常清楚的.int 是基本数据类型,存储的是值 ...

  6. 【Java基础】Java中的语法糖

    目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...

  7. 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题

    因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...

  8. 用JAVA中BufferedImage画出漂亮的验证码点击变化

    如果我们想用JAVA中BufferedImage画出漂亮的验证码点击变化怎么实现呢,类似这样: 点击变化,以下是实现过程,直接上代码: 首先前台:<i><img style=&quo ...

  9. Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

    (一)Eclipse中的快捷键:  ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...

随机推荐

  1. Android:四大架构的优缺点,你真的了解吗?

    声明|转载于作者:KunMinX原文链接:https://www.jianshu.com/p/9ef813d5c1af 前言 前不久刚结束对 20 模块项目的第 3 轮重构,一路见证 MVC.MVP. ...

  2. ionic在ios侧滑页面空白 禁用视图滑动后退

    本人在ios10左右滑动的时候,经常出现左滑页面后退,然后整个页面空白现象,只能强行退出,并重新登录,最简单的方法就是禁用侧滑后退这个功能: 在app.js上config增加如下: $ionicCon ...

  3. MySQL数据库之安装

    一.基础部分 1.数据库是什么 之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组 ...

  4. java Swing组件和事件处理

    1.常见的容器 JComponent是 Container 的子类,中间容器必须添加到底层容器中才能够发挥作用, JPanel 面板 :使用jPanel 创建一个面板,再通过添加组件到该面板上面,JP ...

  5. HTML&javaSkcript&CSS&jQuery&ajax(11)

    1.localStorage 没有 时间的限制数据存储, sessionStorage 针对一个session的存储,首先检查浏览器是否支持对这两个的存储, ifI(type(Storage)!==& ...

  6. Java 写一段字符到指定的文本文档中,如果该文本文档不存在,则创建该文本文档

    写一段字符到指定的文本文档中,如果该文本文档不存在,则创建该文本文档 import java.io.File; import java.io.FileNotFoundException; import ...

  7. Java 获取窗口的宽、高

    创建一个新窗口,通过getSize()获取这个窗口的宽.高. import javax.swing.JFrame; public class WindowInTheMiddle extends JFr ...

  8. 基于“MVC”框架集设计模式,开发用户管理系统!

    MVC----(Model View Controller)设计模型: M:表示业务数据和业务规则.包括DAO(beans).DBHelper(DBHelper),用于封装数据库连接,业务数据库处理. ...

  9. C++ Primer 笔记——类成员指针

    1.当我们初始化一个成员指针或为成员指针赋值时,该指针并没有指向任何数据.成员指针指定了成员而非成员所属的对象,只有当解引用成员指针时,我们才提供对象信息. 2.和普通的函数指针类似,如果成员存在重载 ...

  10. 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

    前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...