📄 drawpicturepanel.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class DrawPicturePanel extends JPanel
{
String command;
private JPanel panel;
private int orgX,orgY,endX,endY,resultX,resultY,z;
private double u;
public DrawPicturePanel()
{
ActionListener draw = new draw();
//ActionListener drawrect = new drawrect();
//ActionListener drawcir = new DrawCir();
//ActionListener drawoval = new DrawOval();
setLayout(new BorderLayout());
//panel.setLayout(new GridLayout(1,3));
panel = new JPanel();
addButton("line",draw);
addButton("rectangle",draw);
addButton("circular",draw);
addButton("oval",draw);
setSize(800,800);
add(panel, BorderLayout.CENTER);
}
private void addButton(String name,ActionListener e)
{
JButton button = new JButton(name);
button.addActionListener(e);
panel.add(button);
}
private class draw implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
command = event.getActionCommand();
panel.addMouseListener(new PanelMouse());
}
}
class PanelMouse extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
orgX = e.getX();
orgY = e.getY();
}
public void mouseReleased(MouseEvent e)
{
endX = e.getX();
endY = e.getY();
resultX = endX - orgX;
resultY = endY - orgY;
Graphics g = panel.getGraphics();
if (command.equals("line"))
{
g.setColor(Color.GREEN);
g.drawLine(orgX, orgY, endX,endY);
}
else if (command.equals("rectangle"))
{
g.setColor(Color.RED);
if(resultX>0&resultY>0)
g.drawRect(orgX,orgY,resultX,resultY);
else if(resultX<0&resultY>0)
g.drawRect(endX, orgY, Math.abs(resultX), resultY);
else if(resultX>0&resultY<0)
g.drawRect(orgX, endY, resultX,Math.abs(resultY));
else if(resultX<0&resultY<0)
g.drawRect(endX, endY, Math.abs(resultX),Math.abs(resultY));
}
else if (command.equals("circular"))
{
g.setColor(Color.ORANGE);
u = Math.sqrt((endX-orgX)*(endX-orgX)+(endY-orgY)*(endY-orgY))/2*(Math.sqrt(2)/2);
z = (int)u;
if(resultX>0&resultY>0)
g.drawArc(orgX,orgY,2*z,2*z,0,360);
else if(resultX<0&resultY>0)
g.drawArc(endX, orgY, 2*z, 2*z,0,360);
else if(resultX>0&resultY<0)
g.drawArc(orgX, endY, 2*z,2*z,0,360);
else if(resultX<0&resultY<0)
g.drawArc(endX, endY, 2*z,2*z,0,360);
}
else
{
g.setColor(Color.BLUE);
if(resultX>0&resultY>0)
g.drawOval(orgX,orgY,resultX,resultY);
else if(resultX<0&resultY>0)
g.drawOval(endX, orgY, Math.abs(resultX), resultY);
else if(resultX>0&resultY<0)
g.drawOval(orgX, endY, resultX,Math.abs(resultY));
else if(resultX<0&resultY<0)
g.drawOval(endX, endY, Math.abs(resultX),Math.abs(resultY));
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -