📄 painter.java
字号:
public void mouseReleased(MouseEvent e) {
// repaint();
}
}
class SC implements ActionListener { //设置颜色的响应
public void actionPerformed(ActionEvent e){
color = JColorChooser.showDialog(Painter.this,"选择颜色",color);
if(color == null )
color = Color.black;
showColor.setBackground(color);
}
}
class SBg implements ActionListener { //设置背景颜色的响应
public void actionPerformed(ActionEvent e){
Bgcolor = JColorChooser.showDialog(Painter.this,"Choose a color",color);
if(Bgcolor == null )
Bgcolor = Color.white;
showBgColor.setBackground(Bgcolor);
paintArea.setBackground(Bgcolor);
try{
Graphics gBuffer = imBuffer.getGraphics();
gBuffer.setColor(Bgcolor);
gBuffer.fillRect(0,0,paintArea.getWidth(),paintArea.getHeight());
}
catch(Exception e1){
System.out.println("ERROR!");
}
}
}
class F implements ActionListener { //设置是否填充的响应
public void actionPerformed(ActionEvent e){
if(fill.isSelected())
{
isFill = true;
}
else
{
isFill = false;
}
}
}
public void Open() //设置打开文件的响应
{
/* File fil = new File("save.jpg");
try{
imBuffer = (Image)ImageIO.read(fil);
Graphics gPaintArea = paintArea.getGraphics();
gPaintArea.drawImage(imBuffer,0,0,paintArea);
}
catch(Exception e1){
System.out.println(e1);
}
*/
JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result =fileChooser.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION)
return ;
File fileName=fileChooser.getSelectedFile();
fileName.canRead();
if (fileName==null||fileName.getName().equals(""))
{
JOptionPane.showMessageDialog(fileChooser,"Invalid File Name","Invalid File Name", JOptionPane.ERROR_MESSAGE);
}
else {
try {
imBuffer = (Image)ImageIO.read(fileName);
Graphics gPaintArea = paintArea.getGraphics();
gPaintArea.drawImage(imBuffer,0,0,paintArea);
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
public void Save() //设置保存的响应
{
/* File fil = new File("save.jpg");
RenderedImage img = (RenderedImage)imBuffer;
try{
ImageIO.write(img,"jpg",fil);
}
catch(Exception e1){
System.out.println(e1);
}
*/
JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result =fileChooser.showSaveDialog(this);
if(result==JFileChooser.CANCEL_OPTION)
return ;
File fileName=fileChooser.getSelectedFile();
fileName.canWrite();
if (fileName==null||fileName.getName().equals(""))
{
JOptionPane.showMessageDialog(fileChooser,"Invalid File Name","Invalid File Name", JOptionPane.ERROR_MESSAGE);
}
else{
RenderedImage img = (RenderedImage)imBuffer;
try{
ImageIO.write(img,"jpg",fileName);
}
catch(Exception e1){
System.out.println(e1);
}
}
}
class Mouse1 extends MouseAdapter {
public void mousePressed(MouseEvent e) {
statusBar.setText(" Mouse Pressed at:[ " + e.getX() + " , " + e.getY() + " ]");//设置状态提示
pressX = e.getX();
pressY = e.getY();
first = true;
String str;
Graphics g = paintArea.getGraphics();
g.setColor(color);
try{
Graphics gBuffer = imBuffer.getGraphics();
gBuffer.setColor(color);
if(shapeFlag == 5)
{
realSize = 14;
str = content.getText();
Font font = new Font(str,Font.PLAIN,realSize); //设置字体大小
g.setFont(font);
gBuffer.setFont(font);
g.drawString(str,e.getX(),e.getY());
gBuffer.drawString(str,e.getX(),e.getY());
}
}
catch(Exception e1){
System.out.println("ERROR!");
}
}
public void mouseReleased(MouseEvent e) {
statusBar.setText(" Mouse Released at:[ " + e.getX() +" , " + e.getY() + " ]");//设置状态提示
Graphics g = paintArea.getGraphics();
g.setColor(color);
try{
Graphics gBuffer = imBuffer.getGraphics();
gBuffer.setColor(color);
if(shapeFlag == 1)
{
if(!isFill)
{
g.drawOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
gBuffer.drawOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
}
else
{
g.fillOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
gBuffer.fillOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
}
}
if(shapeFlag == 2)
{
if(!isFill)
{
g.drawOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
gBuffer.drawOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
else
{
g.fillOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
gBuffer.fillOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
}
if(shapeFlag == 3)
{
g.drawLine(pressX,pressY,e.getX(),e.getY());
gBuffer.drawLine(pressX,pressY,e.getX(),e.getY());
}
if(shapeFlag == 4)
{
if(!isFill)
{
g.drawRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
gBuffer.drawRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
else
{
g.fillRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
gBuffer.fillRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
}
}
catch(Exception e1){
System.out.println("ERROR!");
}
}
}
class Mouse2 extends MouseMotionAdapter {
public void mouseMoved(MouseEvent e) {
statusBar.setText(" Mouse Moved at:[ " + e.getX() +" , " + e.getY() + " ]");
}
public void mouseDragged (MouseEvent e) {
statusBar.setText(" Mouse Dragged at:[ " + e.getX() +" , " + e.getY() + " ]");
Graphics g = paintArea.getGraphics();
g.setColor(color);
Graphics gBuffer = imBuffer.getGraphics();
gBuffer.setColor(color);
if(shapeFlag == 6) //铅笔随意画方式
{
if(first)
{
oldX = pressX;
oldY = pressY;
}
g.drawLine(oldX,oldY,e.getX(),e.getY());
gBuffer.drawLine(oldX,oldY,e.getX(),e.getY());
}
g.setXORMode(new Color(255,255,255)); //异或模式
if(shapeFlag == 1) //画圆
{
if(!isFill)
{
if(!first)
{
g.drawOval(pressX,pressY,oldX-pressX,oldX-pressX);
}
g.drawOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
}
else
{
if(!first)
{
g.fillOval(pressX,pressY,oldX-pressX,oldX-pressX);
}
g.fillOval(pressX,pressY,e.getX()-pressX,e.getX()-pressX);
}
}
if(shapeFlag == 2) //画椭圆
{
if(!isFill)
{
if(!first)
{
g.drawOval(pressX,pressY,oldX-pressX,oldY-pressY);
}
g.drawOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
else
{
if(!first)
{
g.fillOval(pressX,pressY,oldX-pressX,oldY-pressY);
}
g.fillOval(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
}
if(shapeFlag == 3) //画直线
{
if(!first)
{
g.drawLine(pressX,pressY,oldX,oldY);
}
g.drawLine(pressX,pressY,e.getX(),e.getY());
}
if(shapeFlag == 4) //画矩形
{
if(!isFill)
{
if(!first)
{
g.drawRect(pressX,pressY,oldX-pressX,oldY-pressY);
}
g.drawRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
else
{
if(!first)
{
g.fillRect(pressX,pressY,oldX-pressX,oldY-pressY);
}
g.fillRect(pressX,pressY,e.getX()-pressX,e.getY()-pressY);
}
}
oldX = e.getX();
oldY = e.getY();
first = false;
}
}
public static void main(String[] args) {
Painter p = new Painter();
p.setLayout();
p.setVisible(true) ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -