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. Servet

    一.Servlet 是单例吗 不是. 1.你可以用多个 URL 映射同一个 Servlet.这样就会出现多个实例. 2.看看 Servlet 定义: 引用 For a servlet not host ...

  2. WebSocketTest 异步通讯,实时返回数据

    using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;usin ...

  3. Vmware Workstation _linux yum 仓库搭建

    0:检查 vm虚拟机光盘是否已经连接 1. 检测yum 仓库是否已经配置好 [root@oracle ~]# yum list all 如果输入这条指令可以正确显示出rpm 包的列表,则说明yum 仓 ...

  4. web的分页方法

    web分页的三种方式,闲来无事总结一下. 1.使用前端表格插件进行分页 例如用bootstrap的拓展table组件,注意设置其分页属性时设置为"client", 即是 sideP ...

  5. centos7安装laravel

    一. 安装前准备1. 安装screenyum install screen 2. 安装wgetyum install wget 3. 更新yumyum update 4. 安装额外资源库yum ins ...

  6. Practical Web Penettation Testing (the first one Mutillidae 大黄蜂)

    1.now we looke at this book . I decide  to make a brief review the book covers as follows (I straigh ...

  7. 广工赛-hdu6468构造十叉树

    是个以前没见过的模板题.. 我用比较复杂度方式过掉了.. 构造一个十叉树(有点trie的味道)来存数字,然后字典序就是先序遍历的结果 #include<bits/stdc++.h> usi ...

  8. js 对象(object)合并

    var obj1 = { name:'lisi', checked:'true' }; var obj2 = { name:'zhangsan', age:18 }; Object.assign(ob ...

  9. data-key

    在foreach或者each循环中给按钮赋予值 html中:data-key="@config.key" js里获取值: var key = $(this).data(" ...

  10. Java+selenium之WebDriver的抛出异常分析(七)

    NoSuchElementException 1.检查元素的定位器是否正确 2.如果定位器正确,增加休眠时间 3.等待了足够的时间依然找不到的话,更换定位器的定位方式 NoSuchWindowExce ...