「java分类代码」java实现分类
本篇文章给大家谈谈java分类代码,以及java实现分类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中各种类型的键盘输入代码是什么
- 2、在线购物商品分类jsp,java代码怎么写,有父类子类的?
- 3、java代码分类查询并分页显示,点击下一页则跳转到不分类查询
- 4、JAVA根据文件后缀名分类文件,并且将文件复制到不同的文件夹,求这段代码的注释
- 5、java源代码与字节码文件类型有哪些
java中各种类型的键盘输入代码是什么
下面的是键盘和鼠标的各种事件,看一下是不是你要的!
鼠标监听器
鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如下表:
鼠标事件 处理方法
MOUSE_CLICKED MouseClicked (MouseEvent) 鼠标点击(单或双)
MOUSE_PRESSED MousePressed (MouseEvent) 鼠标按下
MOUSE_RELEASED MouseReleased(MouseEvent) 鼠标松开
MOUSE_ENTERED MouseEntered (MouseEvent) 鼠标进入(某组件区域)
MOUSE_EXITED MouseExited (MouseEvent) 鼠标离开(某组件区域)
鼠标事件MouseEvent常用方法
int getClickCount() 得到点击次数1 OR 2;
int getX(), int getY() 得到鼠标的(象素)位置。
对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动事件:
MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动
下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。
例2
下面是讨论MouseMotionListener的使用时机,它提供的下面的两个方法,可让你随时掌握鼠标的坐标,并处理拖曳鼠标的操作。
MouseMotionListener mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
-----------------------------------------------------------------------
下面的范例让你知道鼠标在JFrame上的坐标,并拖曳出直线来。
MouseDemo3.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener.
*/
public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{
int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged
int x=0;
int y=0;
int startx,starty,endx,endy;//起始坐标与终点坐标
public MouseDemo3(){
Container contentPane=getContentPane();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
setSize(300,300);
show();
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/
public void mousePressed(MouseEvent e){
startx=e.getX();
starty=e.getY();
}
public void mouseReleased(MouseEvent e){
endx=e.getX();
endy=e.getY();
}
public void mouseEntered(MouseEvent e){ }
public void mouseExited(MouseEvent e){ }
public void mouseClicked(MouseEvent e){ }
/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/
public void mouseMoved(MouseEvent e){
flag=1;
x=e.getX();
y=e.getY();
repaint();
}
public void mouseDragged(MouseEvent e){
flag=2;
x=e.getX();
y=e.getY();
repaint();
}
public void update(Graphics g){
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(),getHeight());
paint(g);
}
public void paint(Graphics g){
g.setColor(Color.black);
if (flag==1){
g.drawString("鼠标坐标:("+x+","+y+";)",10,50);
g.drawLine(startx,starty,endx,endy);
}
if (flag==2){
g.drawString("拖曳鼠标价坐标:("+x+","+y+";)",10,50);
g.drawLine(startx,starty,x,y);
}
}
public static void main(String[] args){
new MouseDemo3();
}
}
例3
实现一个简单的鼠标控制程序MouseController。程序功能很简单:随机移动鼠标并点击左键。
代码如下:
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.util.Random;
/**
*
*/
/**
* @Create date 2007-11-6
*/
public class MouseController implements Runnable {
private Dimension dim;
private Random rand;
private Robot robot;
private volatile boolean stop = false;
public MouseController() {
dim = Toolkit.getDefaultToolkit().getScreenSize();
rand = new Random();
try {
robot = new Robot();
} catch (AWTException ex) {
ex.printStackTrace();
}
}
public void run() {
while(!stop) {
int x = rand.nextInt(dim.width);
int y = rand.nextInt(dim.height);
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_MASK);
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
public synchronized void stop() {
stop = true;
}
public static void main(String[] args) {
MouseController mc = new MouseController();
Thre
$False$
ad mcThread = new Thread(mc);
System.out.println("Mouse Controller start");
mcThread.start();
try {
Thread.sleep(60000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
mc.stop();
System.out.println("Mouse Controller stoped");
}
}
例4 本例程演示鼠标监听器,鼠标点击和运动的监听。
///
// MouseEvt.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyPanel extends JPanel implements MouseMotionListener{
public MyPanel() {
addMouseListener(new MouseAdapter() {
publicvoid mouseClicked(MouseEvent evt) {
if (evt.getClickCount() = 2)
System.out.println("\n双击鼠标");
int x = evt.getX(); int y = evt.getY();
System.out.println("点击鼠标的位置\nX:" + x + "\ty: " + y);
}
});
addMouseMotionListener(this);
}
publicvoid mouseMoved(MouseEvent evt){
System.out.println("\n鼠标正在移动");
}
publicvoid mouseDragged(MouseEvent evt){
System.out.println("\n鼠标正在拖动");
}
}
class MyFrame extends JFrame{
public MyFrame(){
setTitle("鼠标事件示例程序");
setSize(300, 200);
addWindowListener(new WindowAdapter(){
publicvoid windowClosing(WindowEvent e){
System.exit(0);
}
} );
Container contentPane = getContentPane();
contentPane.add(new MyPanel());
}
}
publicclass MouseEvt{
publicstaticvoid main(String[] args){
JFrame frame = new MyFrame();
frame.setVisible(true);
}
}
///
简要说明
在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运动监听器来处理移动和拖放操作。
鼠标双击事件
鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如: public class MyMouseListener
extends java.awt.event.MouseAdapter ...{
public void mouseClicked(MouseEvent e) ...{
System.out.println("clicked");
int clickTimes = e.getClickCount();
if (clickTimes == 2) ...{
System.out.println("Doublc Clicked!");
}
}
}
但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务.
下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!
public class MyMouseListener
extends java.awt.event.MouseAdapter ...{
private static boolean flag=false;//用来判断是否已经执行双击事件
private static int clickNum=0;//用来判断是否该执行双击事件
public void mouseClicked(MouseEvent e) ...{
final MouseEvent me=e;//事件源
this.flag=false;//每次点击鼠标初始化双击事件执行标志为false
if (this.clickNum == 1) ...{//当clickNum==1时执行双击事件
this.mouseDoubleClicked(me);//执行双击事件
this.clickNum=0;//初始化双击事件执行标志为0
this.flag=true;//双击事件已执行,事件标志为true
return;
}
//定义定时器
java.util.Timer timer=new java.util.Timer();
//定时器开始执行,延时0.2秒后确定是否执行单击事件
timer.schedule(new java.util.TimerTask() ...{
private int n=0;//记录定时器执行次数
public void run() ...{
if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行
n=0;
MyMouseListener.clickNum=0;
this.cancel();
return;
}
if (n == 1) ...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件
mouseSingleClicked(me);//执行单击事件
MyMouseListener.flag = true;
MyMouseListener.clickNum=0;
n=0;
this.cancel();
return;
}
clickNum++;
n++;
}
},new java.util.Date(),500);
}
/** *//**
* 鼠标单击事件
* @param e 事件源参数
*/
public void mouseSingleClicked(MouseEvent e)...{
System.out.println("Single Clicked!");
}
/** *//**
* 鼠标双击事件
* @param e 事件源参数
*/
public void mouseDoubleClicked(MouseEvent e)...{
System.out.println("Doublc Clicked!");
}
}
//Test.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
public Test(){
super("test");
init();
this.setSize(800,600);
this.setVisible(true);
}
private void init(){
JButton b=new JButton("button");
b.setBounds(50,50,100,30);
this.getContentPane().setLayout(null);
this.getContentPane().add(b);
b.addMouseListener(new MyMouseListener());
}
public static void main(String args[]){
new Test();
}
}
键盘监听器
键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。
键码 含义 键码 含义
VK_LEFT/VK_RIGHT 左右方向键 VK_CONTROL Ctrl键
VK_KP_UP 小键盘向上 VK_ATL Alt键
VK_PAUSE 暂停键 VK_SHIFT Shift键
VK_NUMBER0 小键盘数字0 VK_F1 功能键F1
VK_0 数字键0 VK_B 字母键B
虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。
监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。
除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。
下面的例子演示得到键码和字符的方法,在命令行上显示结果。
例1 本例程演示键盘监听器后键码的用法。
///
// KeyEvt.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyKeyListener implements KeyListener{
publicvoid keyPressed(KeyEvent evt) {
System.out.println("\n按键被按下");
showKeyEventMsg(evt);
}
publicvoid keyReleased(KeyEvent evt){ }
publicvoid keyTyped(KeyEvent evt) { }
privatevoid showKeyEventMsg(KeyEvent evt){//显示按键事件信息
//得到按键对应的整型数
int code = evt.getKeyCode();
//返回按键事件所代表的字符
char c = evt.getKeyChar();
//得到代表按键的字符串
String szText = evt.getKeyText(code);
if (code != KeyEvent.VK_UNDEFINED)
System.out.println("\n按键对应的整型数:"+code);
if (c != KeyEvent.CHAR_UNDEFINED)
System.out.println("\n与按键相联系的字符:"+c);
if (evt.isShiftDown())
System.out.println("\n按键Shift被按下");
System.out.println("\n按键本身的字符串:"+szText);
}
}
class ButtonPanel extends JPanel{
public ButtonPanel() {
//新建一个文本域组件
tf = new JTextField(20);
add(tf);
//指定用来处理该按钮事件的监听器对象为JPanel本身
myListener = new MyKeyListener();
tf.addKeyListener(myListener);
}
private JTextField tf;
private MyKeyListener myListener;
}
class ButtonFrame extends JFrame{
public ButtonFrame() {
setTitle("键盘事件示例程序");
setSize(300, 200);
setLocation(100,100);
addWindowListener(new WindowAdapter() {
publicvoid windowClosing(WindowEvent e)
{ System.exit(0);
}
});
Container ctPane = getContentPane();
ctPane.add(new ButtonPanel());
}
}
publicclass KeyEvt{
publicstaticvoid main(String[] args) {
JFrame frame = new ButtonFrame();
frame.setVisible(true);
}
}
///简要说明
程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。
在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel放到窗口ButtonFrame中。
在线购物商品分类jsp,java代码怎么写,有父类子类的?
N种办法
1、mybatis 配置文件 写SQL 解决
2、通过JAVA service 通过父类信息查询子类并封装
3、提供一个接口,前台二级联动方式,点第一个给后台传值0 ,查询父ID为0 的 当点击第二个联动的时候 把第一个信息的ID 给你传过去,如 电子数码ID 为1 那就传1 后台还是根据父类查询,也就是 父类ID 1 这样就查出 所对应的 子类信息了。
java代码分类查询并分页显示,点击下一页则跳转到不分类查询
你查出“495刀具”这个类别的时候,是加了一个鉴别的条件了吧,所以你能查出“495”道具这个类别总数为85而不是92.
你点击下一页时候却显示了全部的记录,说明你在点击下一页时候,后台程序处理并没有根据“495刀具”这个类别的条件查询,你自己查看下代码。
JAVA根据文件后缀名分类文件,并且将文件复制到不同的文件夹,求这段代码的注释
以下都是one by one letter打的,不容易,给点分吧。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.swing.JFileChooser;
/**
* 1.选择被复制的源目录:sourcePath
* 2.选择文件被复制后存放的目标目录:targetPath
* 3.文件后缀名分类文件,并且将文件复制到不同的文件夹
*
*/
public class FileDemo {
/**
* 启动方法
* @param args
*/
public static void main(String[] args) {
/**
* 选择被复制的源目录:sourcePath
*/
File sourcePath = getSourcePath();
/**
* 选择文件被复制后存放的目标目录:targetPath
*/
File outputPath = getOutputPath();
/**
* 执行复制操作
*/
handlePath(sourcePath, outputPath);
}
/**
* 处理文件分类复制
* @param sourcePath
* @param outputPath
*/
private static void handlePath(File sourcePath, File outputPath) {
if (sourcePath == null || outputPath == null) //1.如果没有选择源目录或目标目录,则返回
return;
for (File file : sourcePath.listFiles()) { //2.取得源目录下所有的文件或文件夹,并进行遍历
if (file.isDirectory()) {
//3.如果当前遍历的是文件夹,则使用递归调用,继续处理该文件夹下面的所有文件或文件夹
handlePath(file, outputPath);
} else {
//4.如果当前遍历的是不是文件夹而是文件,那么直接开始copy的操作
//4.1.取得文件的文件名,包含文件后缀名
String fileName = file.getName();
if (fileName.contains(".")) {
//4.2.1.如果该文件有后缀名,即包含“.”点符号,则取得文件的后缀名为:最后一个点符号后面的字符串
String suffix = fileName.substring(fileName.lastIndexOf('.') + 1);
//4.2.2.根据文件最后的输出的目标目录和文件的后缀名,执行copy的操作(因为最后输出格式为按文件的后缀名分类,即最后输出如:pdf目录下面有pdf文件,txt目录下面有txt文件)
copy(file, new File(outputPath, suffix));
} else {
//4.3.如果该文件没有后缀名,即不包含“.”点符号,则直接在文件最后的输出的目标目录下建立“nosuffix”目录,执行copy的操作,将没有后缀名的文件复制到nosuffix目录下
copy(file, new File(outputPath, "nosuffix"));
}
}
}
}
/**
* 单个文件复制操作
* @param sourceFile
* @param targetDir
*/
private static void copy(File sourceFile , File targetDir){
System.out.println("copying " + sourceFile);
//1.如果目标目录不存在,则新建,此处的目标目录为按文件后缀名命名的目录,如pdf目录,txt目录以及nosuffix目录
if(!targetDir.exists()){
targetDir.mkdir();//新建目录
}
try {
//2.将源文件读取到输入流中
FileInputStream fis = new FileInputStream(sourceFile);
//3.按照目标目录和文件名构建文件输出流
FileOutputStream fos = new FileOutputStream(new File(targetDir , sourceFile.getName())) ;
//4.定义缓冲区,大小为102400byte
byte[] buf = new byte[102400];
//5.定义输入流读取到的文件大小,下面会用到
int available = 0;
//6.fis.available():使用输入流fis读取当前文件的大小,将读取到的大小赋值给available
while((available = fis.available()) buf.length){
//7.如果当前读取到的大小available大于定义的缓冲区的大小102400,则用fis.read(buf)方法读取文件。
//此时,缓冲区buf会被完全读满,即源文件的前102400 byte的数据都会被读取到buf中,
//fis下一次读取就会从102401 byte开始读,即文件读取的开始位置移动到了available+1的位置上
fis.read(buf);
//8.使用文件输入流fos将缓冲区buf中的内容写入到目标文件中
fos.write(buf);
}
//9.上面的循环始终会结束,因为文件的大小不可能无限的大,当上面循环的判断使用fis.available()读取到当前剩余的文件大小小于102400 byte时,
//使用fis.read(buf, 0, available)将剩余的文件数据读取的buf对应的位置,
//例如,最后剩下的文件数据大小为100 byte,即available的值为100,那么使用执行方法fis.read(buf, 0, available),后,
//buf数组中的buf[0]到buf[99]会有数据,buf[100]之后的就都是空了。
fis.read(buf, 0, available);
//10.调用输出流fos.write(buf, 0, available)表示将buf中的前available大小的数据输出,
//例如上面举得例子,就只会将buf中的前100位数据输出。
fos.write(buf, 0, available);
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 弹出文件选择对话框,选择要被复制的源目录
* @return
*/
private static File getSourcePath(){
//1.弹出文件选择对话框
JFileChooser chooser = new JFileChooser();
//2.设置只能选择目录
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//3.返回选择的目录,如果没有选择则返回null
if(chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
return chooser.getSelectedFile();
}
return null;
}
/**
* 弹出对话框,选择文件复制后存放的目标目录
* @return
*/
private static File getOutputPath(){
//1.弹出文件选择对话框
JFileChooser chooser = new JFileChooser();
//2.设置只能选择目录
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//3.返回选择的目录,如果没有选择则返回null
if(chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
return chooser.getSelectedFile();
}
return null;
}
}
java源代码与字节码文件类型有哪些
java源文件的格式是text/html类型的,可以直接用记事本打开。编码可以是utf-8,也可以是其它类型的。后缀为.java
源文件编译后的字节码是以CAFE BABY开头的二进制文件。需要JVM才能读懂。后缀为.class
一般来说,一个类对应一个字节码文件,内部类编译后也会生成一个单独的字节码文件。字节码文件是以类名来命名(标识)的。
一些相关的字节码文件可以按照包结构打包成jar文件。jar文件和zip文件差不多。
java程序一般都会依赖很多的jar文件,比如最基本的rt.jar。
关于java分类代码和java实现分类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。