📄 mousegraphics.java
字号:
import java.lang.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MouseGraphics implements ActionListener,ItemListener,MouseMotionListener,MouseListener
{
private Frame frame;
private Panel panelMain,panel;
private MenuBar mb;
private Menu m1,m2;
private MenuItem Clear,Painter,Quit;
private CheckboxGroup cbg;
private Checkbox Red,Yellow,Green,Blue,Black;
private Canvas canvas;
private Color color = Color.black;
private Graphics graphics;
private Dimension screenSize;
private Dimension frameSize;
private float size=1;
private int x=0,y=0,rx=0,ry=0;
private boolean isPaint = false,isDragged = false;
public MouseGraphics()
{
frame = new Frame("MouseGraphics");
mb = new MenuBar();
frame.setMenuBar(mb);
m1 = new Menu("File");
mb.add(m1);
Clear = new MenuItem("Clear");
Painter = new MenuItem("Paint");
Quit = new MenuItem("Quit");
m1.add(Clear);
m1.add(Painter);
m1.addSeparator();
m1.add(Quit);
Clear.addActionListener(this);
Painter.addActionListener(this);
Quit.addActionListener(this);
panelMain = new Panel();
frame.add(panelMain);
panelMain.setLayout(new BorderLayout());
canvas = new Canvas();
canvas.setSize(500,350);
panelMain.add(canvas,BorderLayout.CENTER);
panel = new Panel();
panelMain.add(panel,BorderLayout.SOUTH);
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.setBackground(new Color(240,238,228));
cbg = new CheckboxGroup();
Red = new Checkbox("Red", cbg, false);
Yellow = new Checkbox("Yellow", cbg, false);
Green = new Checkbox("Green", cbg, false);
Blue = new Checkbox("Blue", cbg, false);
Black = new Checkbox("Black", cbg, true);
panel.add(Red);
panel.add(Yellow);
panel.add(Green);
panel.add(Blue);
panel.add(Black);
Red.addItemListener(this);
Yellow.addItemListener(this);
Green.addItemListener(this);
Blue.addItemListener(this);
Black.addItemListener(this);
canvas.addMouseMotionListener(this);
canvas.addMouseListener(this);
graphics = canvas.getGraphics();
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setResizable(false);
frame.setSize(500,350);
frameSize = frame.getSize();
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.show();
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent event)
{
Object cmd = event.getSource();
try
{
if(cmd == Clear)
{
canvas.update(graphics);
isPaint = false;
}
else if(cmd == Painter)
{
isPaint = true;
}
else if(cmd == Quit)
{
System.exit(0);
}
}
catch(Exception e)
{}
}
public void itemStateChanged(ItemEvent e)
{
if(e.getItemSelectable() == Red)
color = Color.red;
else if(e.getItemSelectable() == Yellow)
color = Color.yellow;
else if(e.getItemSelectable() == Green)
color = Color.green;
else if(e.getItemSelectable() == Blue)
color = Color.blue;
else if(e.getItemSelectable() == Black)
color = Color.black;
}
public void drawGraphics()
{
graphics = canvas.getGraphics();
Graphics2D g2d = (Graphics2D)graphics;
BasicStroke stokeLine = new BasicStroke(size);
g2d.setStroke(stokeLine);
g2d.setColor(color);
g2d.drawLine(rx,ry,x,y);
}
public void mouseDragged(MouseEvent e)
{
isDragged = true;
rx = x;
ry = y;
x = (int)e.getX();
y = (int)e.getY();
if(isPaint)
{
drawGraphics();
}
}
public void mouseMoved(MouseEvent e)
{
rx = x = (int)e.getX();
ry = y = (int)e.getY();
}
public void mousePressed(MouseEvent e)
{
if(isDragged == false)
{
rx = x = (int)e.getX();
ry = y = (int)e.getY();
}
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered (MouseEvent me) {}
public void mouseExited (MouseEvent me) {}
public static void main(String args[])
{
new MouseGraphics();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -