「java圆形控件」java圆形代码

博主:adminadmin 2023-01-25 16:51:05 501

今天给各位分享java圆形控件的知识,其中也会对java圆形代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

问一个问题,JAVA上可不可以做出来一个圆形的按钮?

可以自定义的

贴代码给你看下

import java.awt.Color;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Graphics;

import java.awt.Shape;

import java.awt.SystemColor;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Ellipse2D;

import javax.swing.JButton;

import javax.swing.JFrame;

public class CircleButton extends JButton {

Shape shape;

Color bgColor = SystemColor.control;

public CircleButton() {

    this("未命名", null);

}

public CircleButton(String label) {

    this(label, null);

}

public CircleButton(String label, Color bgColor) {

    super(label); // 调用父类构造方法

    if (bgColor != null) {

      this.bgColor = bgColor;

    }

    Dimension size = this.getPreferredSize();

    size.width = size.height = Math.max(size.width, size.height);

    this.setPreferredSize(size); // 设置宽高等距

    this.setContentAreaFilled(false); // 不绘制内容区域

    this.setBorderPainted(false); // 不绘制边框

    this.setFocusPainted(false); // 不绘制焦点状态

}

protected void paintComponent(Graphics g) {

    // 如果鼠标按下,isArmed()方法返回true

    if (this.getModel().isArmed()) {

      g.setColor(java.awt.SystemColor.controlHighlight);

    } else {

      g.setColor(java.awt.SystemColor.controlShadow);

      g.setColor(this.bgColor); // 设置背景颜色

    }

    g.fillOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制圆形背景区域

    g.setColor(java.awt.SystemColor.controlShadow); // 设置边框颜色

    g.drawOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制边框线

    super.paintComponent(g);

}

public boolean contains(int x, int y) {

    if ((shape == null) || (!shape.getBounds().equals(this.getBounds()))) {

      this.shape = new Ellipse2D.Float(0, 0, this.getWidth(), this

          .getHeight());

    }

    return shape.contains(x, y);

}

}

class CircleButtonTest {

public static void main(String[] args) {

    JFrame jf = new JFrame("自定义按钮");

    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    jf.setSize(350, 280);

    jf.setLocationRelativeTo(null);

    jf.setLayout(new FlowLayout());

    Color arrColor[] = new Color[] { Color.blue, Color.black, Color.red,

        Color.yellow, Color.green };

    for (int i = 0; i  5; i++) {

      CircleButton cb = new CircleButton("圆形按钮" + (i+1),arrColor[i]);

      jf.getContentPane().add(cb);

      cb.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

          System.out.println("按钮");

        }

      });

    }

    jf.setVisible(true);

}

}

java 设置了带透明圆形的png图片的圆形按钮后,用setIcon没反应了。

注意使用加上下面两个方法,具体是true,还是false。

我记不清了,你试一试吧。

============================

button.setOpaque(false);

button.setContentAreaFilled(false);

JAVA画图板程序,用netbeans做,要求画圆,椭圆,直线,三角形,矩形,可以填充颜色和擦除

import java.applet.*; 

import java.awt.*; 

import java.awt.event.*; 

import java.util.*; 

import javax.swing.*; 

import java.awt.geom.*; 

import java.io.*; 

import java.sql.Connection;

class Point implements Serializable 

int x,y; 

Color col; 

int tool; 

int boarder; 

Point(int x, int y, Color col, int tool, int boarder) 

this.x = x; 

this.y = y; 

this.col = col; 

this.tool = tool; 

this.boarder = boarder; 

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener 

int x = -1, y = -1; 

int con = 1;//画笔大小 

int Econ = 5;//橡皮大小 

int toolFlag = 0;//toolFlag:工具标记 

//toolFlag工具对应表: 

//(0--画笔);(1--橡皮);(2--清除); 

//(3--直线);(4--圆);(5--矩形); 

Color c = new Color(0,0,0); //画笔颜色 

BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细 

Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 

Vector paintInfo = null;//点信息向量组 

int n = 1; 

FileInputStream picIn = null; 

FileOutputStream picOut = null; 

ObjectInputStream VIn = null; 

ObjectOutputStream VOut = null; 

// *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ 

Panel toolPanel; 

Button eraser, drLine,drCircle,drRect; 

Button clear ,pen; 

Choice ColChoice,SizeChoice,EraserChoice; 

Button colchooser; 

Label 颜色,大小B,大小E; 

//保存功能 

Button openPic,savePic; 

FileDialog openPicture,savePicture; 

paintboard(String s) 

super(s); 

addMouseMotionListener(this); 

addMouseListener(this); 

paintInfo = new Vector(); 

/*各工具按钮及选择项*/ 

//颜色选择 

ColChoice = new Choice(); 

ColChoice.add("black"); 

ColChoice.add("red"); 

ColChoice.add("blue"); 

ColChoice.add("green"); 

ColChoice.addItemListener(this); 

//画笔大小选择 

SizeChoice = new Choice(); 

SizeChoice.add("1"); 

SizeChoice.add("3"); 

SizeChoice.add("5"); 

SizeChoice.add("7"); 

SizeChoice.add("9"); 

SizeChoice.addItemListener(this); 

//橡皮大小选择 

EraserChoice = new Choice(); 

EraserChoice.add("5"); 

EraserChoice.add("9"); 

EraserChoice.add("13"); 

EraserChoice.add("17"); 

EraserChoice.addItemListener(this); 

//////////////////////////////////////////////////// 

toolPanel = new Panel(); 

clear = new Button("清除"); 

eraser = new Button("橡皮"); 

pen = new Button("画笔"); 

drLine = new Button("画直线"); 

drCircle = new Button("画圆形"); 

drRect = new Button("画矩形"); 

openPic = new Button("打开图画"); 

savePic = new Button("保存图画"); 

colchooser = new Button("显示调色板"); 

//各组件事件监听 

clear.addActionListener(this); 

eraser.addActionListener(this); 

pen.addActionListener(this); 

drLine.addActionListener(this); 

drCircle.addActionListener(this); 

drRect.addActionListener(this); 

openPic.addActionListener(this); 

savePic.addActionListener(this); 

colchooser.addActionListener(this); 

颜色 = new Label("画笔颜色",Label.CENTER); 

大小B = new Label("画笔大小",Label.CENTER); 

大小E = new Label("橡皮大小",Label.CENTER); 

//面板添加组件 

toolPanel.add(openPic); 

toolPanel.add(savePic); 

toolPanel.add(pen); 

toolPanel.add(drLine); 

toolPanel.add(drCircle); 

toolPanel.add(drRect); 

toolPanel.add(颜色); toolPanel.add(ColChoice); 

toolPanel.add(大小B); toolPanel.add(SizeChoice); 

toolPanel.add(colchooser); 

toolPanel.add(eraser); 

toolPanel.add(大小E); toolPanel.add(EraserChoice); 

toolPanel.add(clear); 

//工具面板到APPLET面板 

add(toolPanel,BorderLayout.NORTH); 

setBounds(60,60,900,600); setVisible(true); 

validate(); 

//dialog for save and load 

openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD); 

openPicture.setVisible(false); 

savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE); 

savePicture.setVisible(false); 

openPicture.addWindowListener(new WindowAdapter() 

public void windowClosing(WindowEvent e) 

{ openPicture.setVisible(false); } 

}); 

savePicture.addWindowListener(new WindowAdapter() 

            @Override

public void windowClosing(WindowEvent e) 

{ savePicture.setVisible(false); } 

}); 

addWindowListener(new WindowAdapter() 

public void windowClosing(WindowEvent e) 

{ System.exit(0);} 

}); 

public void paint(Graphics g) 

Graphics2D g2d = (Graphics2D)g; 

Point p1,p2; 

n = paintInfo.size(); 

if(toolFlag==2) 

g.clearRect(0,0,getSize().width,getSize().height);//清除 

for(int i=0; in ;i++){ 

p1 = (Point)paintInfo.elementAt(i); 

p2 = (Point)paintInfo.elementAt(i+1); 

size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); 

g2d.setColor(p1.col); 

g2d.setStroke(size); 

if(p1.tool==p2.tool) 

switch(p1.tool) 

case 0://画笔 

Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); 

g2d.draw(line1); 

break; 

case 1://橡皮 

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); 

break; 

case 3://画直线 

Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); 

g2d.draw(line2); 

break; 

case 4://画圆 

Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)); 

g2d.draw(ellipse); 

break; 

case 5://画矩形 

Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)); 

g2d.draw(rect); 

break; 

case 6://截断,跳过 

i=i+1; 

break; 

default : 

}//end switch 

}//end if 

}//end for 

public void itemStateChanged(ItemEvent e) 

if(e.getSource()==ColChoice)//预选颜色 

String name = ColChoice.getSelectedItem(); 

            switch (name) {

                case "black":

                    c = new Color(0,0,0);

                    break;

                case "red":

                    c = new Color(255,0,0);

                    break;

                case "green":

                    c = new Color(0,255,0);

                    break;

                case "blue":

                    c = new Color(0,0,255);

                    break;

            }

else if(e.getSource()==SizeChoice)//画笔大小 

String selected = SizeChoice.getSelectedItem(); 

            switch (selected) {

                case "1":

                    con = 1;

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                    break;

                case "3":

                    con = 3;

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                    break;

                case "5":

                    con = 5;

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                    break;

                case "7":

                    con = 7;

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                    break;

                case "9":

                    con = 9;

                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                    break;

            }

else if(e.getSource()==EraserChoice)//橡皮大小 

String Esize = EraserChoice.getSelectedItem(); 

if(Esize=="5") 

{ Econ = 5*2; } 

else if(Esize=="9") 

{ Econ = 9*2; } 

else if(Esize=="13") 

{ Econ = 13*2; } 

else if(Esize=="17") 

{ Econ = 17*3; } 

public void mouseDragged(MouseEvent e) 

Point p1 ; 

switch(toolFlag){ 

case 0://画笔 

x = (int)e.getX(); 

y = (int)e.getY(); 

p1 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p1); 

repaint(); 

break; 

case 1://橡皮 

x = (int)e.getX(); 

y = (int)e.getY(); 

p1 = new Point(x, y, null, toolFlag, Econ); 

paintInfo.addElement(p1); 

repaint(); 

break; 

default : 

public void mouseMoved(MouseEvent e) {} 

public void update(Graphics g) 

paint(g); 

public void mousePressed(MouseEvent e) 

Point p2; 

switch(toolFlag){ 

case 3://直线 

x = (int)e.getX(); 

y = (int)e.getY(); 

p2 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p2); 

break; 

case 4: //圆 

x = (int)e.getX(); 

y = (int)e.getY(); 

p2 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p2); 

break; 

case 5: //矩形 

x = (int)e.getX(); 

y = (int)e.getY(); 

p2 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p2); 

break; 

default : 

public void mouseReleased(MouseEvent e) 

Point p3; 

switch(toolFlag){ 

case 0://画笔 

paintInfo.addElement(cutflag); 

break; 

case 1: //eraser 

paintInfo.addElement(cutflag); 

break; 

case 3://直线 

x = (int)e.getX(); 

y = (int)e.getY(); 

p3 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p3); 

paintInfo.addElement(cutflag); 

repaint(); 

break; 

case 4: //圆 

x = (int)e.getX(); 

y = (int)e.getY(); 

p3 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p3); 

paintInfo.addElement(cutflag); 

repaint(); 

break; 

case 5: //矩形 

x = (int)e.getX(); 

y = (int)e.getY(); 

p3 = new Point(x, y, c, toolFlag, con); 

paintInfo.addElement(p3); 

paintInfo.addElement(cutflag); 

repaint(); 

break; 

default: 

public void mouseEntered(MouseEvent e){} 

public void mouseExited(MouseEvent e){} 

public void mouseClicked(MouseEvent e){} 

public void actionPerformed(ActionEvent e) 

if(e.getSource()==pen)//画笔 

{toolFlag = 0;} 

if(e.getSource()==eraser)//橡皮 

{toolFlag = 1;} 

if(e.getSource()==clear)//清除 

toolFlag = 2; 

paintInfo.removeAllElements(); 

repaint(); 

if(e.getSource()==drLine)//画线 

{toolFlag = 3;} 

if(e.getSource()==drCircle)//画圆 

{toolFlag = 4;} 

if(e.getSource()==drRect)//画矩形 

{toolFlag = 5;} 

if(e.getSource()==colchooser)//调色板 

Color newColor = JColorChooser.showDialog(this,"调色板",c); 

c = newColor; 

if(e.getSource()==openPic)//打开图画 

openPicture.setVisible(true); 

if(openPicture.getFile()!=null) 

int tempflag; 

tempflag = toolFlag; 

toolFlag = 2 ; 

repaint(); 

try{ 

paintInfo.removeAllElements(); 

File filein = new File(openPicture.getDirectory(),openPicture.getFile()); 

picIn = new FileInputStream(filein); 

VIn = new ObjectInputStream(picIn); 

paintInfo = (Vector)VIn.readObject(); 

VIn.close(); 

repaint(); 

toolFlag = tempflag; 

catch(ClassNotFoundException IOe2) 

repaint(); 

toolFlag = tempflag; 

System.out.println("can not read object"); 

catch(IOException IOe) 

repaint(); 

toolFlag = tempflag; 

System.out.println("can not read file"); 

if(e.getSource()==savePic)//保存图画 

savePicture.setVisible(true); 

try{ 

File fileout = new File(savePicture.getDirectory(),savePicture.getFile()); 

picOut = new FileOutputStream(fileout); 

VOut = new ObjectOutputStream(picOut); 

VOut.writeObject(paintInfo); 

VOut.close(); 

catch(IOException IOe) 

System.out.println("can not write object"); 

}//end paintboard 

public class Pb 

public static void main(String args[]) 

{ new paintboard("画图程序"); } 

}

关于java圆形控件和java圆形代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。