问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

还是java

发布网友 发布时间:2022-04-27 00:27

我来回答

2个回答

热心网友 时间:2022-06-21 17:13

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.Border;

public class DrawShapes extends JFrame{
private static final long serialVersionUID = 3685715844170953607L;
// 作图面板
private CVS cvs;
// 作图方式选择按钮
private JToggleButton cycle,line,rect;
private JLabel red,blue,green;
private ButtonGroup bgroup;
// 按钮布局面板
private JPanel menuPanel;
// 复位按钮
private JButton clean;

public DrawShapes(){
super("DrawShape!");
// this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(640,480);
this.setLocationRelativeTo(null);
this.getContentPane().add(cvs=new CVS());
this.initComponents();
}
// 初始化组件
private void initComponents() {
this.menuPanel = new JPanel(null);
this.menuPanel.setPreferredSize(new Dimension(400,28));
this.menuPanel.setBorder(BorderFactory.createLineBorder(Color.gray));
this.getContentPane().add(this.menuPanel,"South");
this.bgroup = new ButtonGroup();
this.cycle = new JToggleButton("圆形");
this.cycle.setBounds(20,4,68,20);
this.line = new JToggleButton("直线");
this.line.setBounds(100,4,68,20);
this.rect=new JToggleButton("矩形");
this.rect.setBounds(180,4,68,20);
red = new JLabel();
red.setOpaque(true);
red.setBackground(Color.red);
red.setBounds(258,4,20,20);
blue=new JLabel();
blue.setOpaque(true);
blue.setBackground(Color.blue);
blue.setBounds(282,4,20,20);
green=new JLabel();
green.setBackground(Color.green);
green.setOpaque(true);
green.setBounds(306,4,20,20);
this.menuPanel.add(red);
this.menuPanel.add(blue);
this.menuPanel.add(green);
this.menuPanel.add(cycle);
this.menuPanel.add(line);
this.menuPanel.add(rect);
this.bgroup.add(cycle);
this.bgroup.add(line);
this.bgroup.add(rect);
this.clean = new JButton("清除");
this.clean.setBounds(338,4,68,20);
this.menuPanel.add(clean);
//按钮动作侦听器实例
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src.equals(cycle))
cvs.setSX(S.CYCLE);//画圆
else if(src.equals(line))
cvs.setSX(S.LINE);//画直线
else if(src.equals(rect))
cvs.setSX(S.RECTANGLE);//画矩形
else if(src.equals(clean))
cvs.reset();//复位
}
};
//给按钮注册侦听器
this.cycle.addActionListener(al);
this.line.addActionListener(al);
this.rect.addActionListener(al);
this.clean.addActionListener(al);
MouseListener ml = new MouseAdapter(){
public void mousePressed(MouseEvent e){
Object s = e.getSource();
Border b = BorderFactory.createLoweredBevelBorder();
if(s.equals(red)){
cvs.setFC(Color.red);
red.setBorder(b);
blue.setBorder(null);
green.setBorder(null);
}
else if(s.equals(blue)){
cvs.setFC(Color.blue);
blue.setBorder(b);
red.setBorder(null);
green.setBorder(null);
}
else if(s.equals(green)){
cvs.setFC(Color.green);
green.setBorder(b);
blue.setBorder(null);
red.setBorder(null);
}
}
};
blue.addMouseListener(ml);
red.addMouseListener(ml);
green.addMouseListener(ml);
}
// 程序入口
public static void main(String[] aregs) throws Exception{
//调用系统视觉设置
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new DrawShapes().setVisible(true);
}
});
}
}

//主作图面板类,可接收一般鼠标事件和鼠标拖动事件
class CVS extends Canvas implements MouseListener,MouseMotionListener{
private static final long serialVersionUID = 5585026114112579483L;

// 指定图形的第一点,比如矩形的角点,圆形的圆心,直线的第一点
private int x,y;
// 作图大小
private int w,h;
// 作图类型控制
private S sx = S.NULL;
// 双缓冲,背景缓冲区和临时缓冲区
private BufferedImage background,buff;
// 图像更新标记
private boolean hasChanged;
// 背景色,临时作图色,前景色
private Color bgc = Color.white;
private Color tmpc = Color.gray;
private Color fgc = Color.blue;

public CVS(){
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
// 作图控制方式设置
public void setSX(S s){
sx = s;
}
// 控制作图颜色:
public void setFC(Color c){
fgc=c;
}
// 绘制临时缓冲区
private void drawing(int X,int Y) {
Graphics g = buff.getGraphics();
g.setColor(bgc);
g.clearRect(0,0,w,h);
copyBuffer();
g.setColor(tmpc);
switch(sx){
case CYCLE:
Point p = new Point(x,y);
Point2D p2 = new Point2D.Double(X,Y);
int dist = (int)p.distance(p2);
g.drawOval(x,y,0,0);
g.drawOval(x-dist, y-dist,dist*2,dist*2);
break;
case LINE:
g.drawLine(x,y,X,Y);
break;
case RECTANGLE:
int dx = x-X;
dx = Math.abs(dx);
int dy = y-Y;
dy = Math.abs(dy);
g.drawRect(x<X?x:X,y<Y?y:Y,dx,dy);
break;
}
g.dispose();
drawBufferToCVS();
}
// 绘制背景缓冲区
private void drawBuffer(int X,int Y){
Graphics2D gd = background.createGraphics();
gd.setColor(fgc);
gd.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
switch(sx){
case CYCLE:
Point p = new Point(x,y);
Point2D p2 = new Point2D.Double(X,Y);
int dist = (int)p.distance(p2);
gd.drawOval(x,y,0,0);
gd.drawOval(x-dist, y-dist,dist*2,dist*2);
break;
case LINE:
gd.drawLine(x,y,X,Y);
break;
case RECTANGLE:
int dx = x-X;
dx = Math.abs(dx);
int dy = y-Y;
dy = Math.abs(dy);
gd.drawRect(x<X?x:X,y<Y?y:Y,dx,dy);
break;
default:
popupMsg();
}
gd.dispose();
Graphics g = this.getGraphics();
g.clearRect(0,0,w,h);
g.drawImage(background,0,0,null);
g.dispose();
}
private void popupMsg(){
JOptionPane.showMessageDialog(this,"请选择一种作图方式开始作图.");
}
// 复制背景缓冲区内容到临时缓冲区
private void copyBuffer(){
Graphics g = buff.getGraphics();
g.drawImage(background,0,0,null);
g.dispose();
}
// 印出临时缓冲区内容到窗口
private void drawBufferToCVS() {
Graphics g = this.getGraphics();
g.drawImage(buff,0,0,null);
g.dispose();
}
// 清除双缓冲区并清除窗口内容
public void reset(){
clearContents(buff);
clearContents(background);
Graphics g = this.getGraphics();
g.setColor(bgc);
g.fillRect(0,0,w,h);
g.dispose();
}
// 清除指定缓冲区内容
private void clearContents(BufferedImage i){
Graphics g = i.getGraphics();
g.setColor(bgc);
g.fillRect(0,0,w,h);
g.dispose();
}
// 初始化缓冲区
private void initImages() {
background=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
buff=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
clearContents(background);
clearContents(buff);
}
// 重写此方法,以便在窗口重新显示时能正确显示最后的内容.
public void paint(Graphics g){
// w = this.getWidth();
// h = this.getHeight();
if(background==null){
w = this.getToolkit().getScreenSize().width;
h = this.getToolkit().getScreenSize().height;
initImages();
}
g.drawImage(background,0,0,null);
g.dispose();
}
// 双击作图区也能做清除动作,呵呵
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2)
reset();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// 每当按下鼠标时就重新设置第一点的坐标
public void mousePressed(MouseEvent e) {
this.x=e.getX();
this.y=e.getY();
}
// 每当释放鼠标时就决定是否需要将背景缓冲区印出到窗口
public void mouseReleased(MouseEvent e) {
if(hasChanged){
hasChanged=false;
drawBuffer(e.getX(),e.getY());
}
}
// 每当鼠标拖动时开始作图
public void mouseDragged(MouseEvent e) {
hasChanged=true;
drawing(e.getX(),e.getY());
}
public void mouseMoved(MouseEvent e) {}
}
//作图类型的枚举
enum S{
CYCLE,RECTANGLE,LINE,NULL
}
///:~ end

热心网友 时间:2022-06-21 17:13

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.*;

class TestTimer extends JFrame implements ActionListener {
// 继承JFrame类--用来画框框的
// 实现ActionListener接口--事件监听

Timer timer;//声明一个Timer对象,Timer是javax.swing包中的类,计时*

JLabel display = new JLabel();//声明一个JLabel对象,画框框用的

SimpleDateFormat dateFmt = new SimpleDateFormat("hh:mm:ss");
//时间类,有格式化时间的作用

TestTimer() {

getContentPane().setLayout(new FlowLayout());
//getContentPane()是JFrame的方法,相当于得到JFrame的区域
//setLayout是设置布局
timer = new Timer(1000, this);
//构造Timer(int delay, ActionListener listener)
//因为这个类实现了ActionListener接口,所以*可以隔1000毫秒通知这个类(this),构造方法摘要
timer.setRepeats(true);
//每隔1000毫秒通知一次,如果设置成false则只会通知一次
timer.setInitialDelay(1000);
//设置初始延迟,这段可以不要,因为构造中已经设置了
timer.start();
//启动计时*,向外部的监听类发信号
getContentPane().add(display);
//使用JFrame必须做的事情,就是把这个类在jframe的区域里显示出来
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置关闭事件,不写这个,你点小叉叉关不掉这个程序
setSize(20000, 100);
//设置jframe的大小,你写歌setSize(2000,1000)试试就知道了
setVisible(true);
//设置jframe的可见性,不写ture你是看不到效果的
} // TestTimer

public void actionPerformed(ActionEvent e) {
//ActionListener接口必须是实现的方法,用于监听
if (e.getSource() == timer) {
//如果得到是timer发来的信号
//设置jframe要显示的内容,这里设置的内容是当前时间,dateFmt.format可以把当前时间格式化为hh:mm:ss的形式
display.setText(dateFmt.format(new Date()));
}

} // actionPerformed

public static void main(String[] args) {
//这个不用说了
TestTimer tt = new TestTimer();
}
} // TestTimer
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
干货| 如何利用PPT绘制手绘图像(内含视频教学)。 小米Mix2s开发者选项的设置与应用指南(探索小米Mix2s开发者选项)_百度... 我今年41岁女,我想问一买哪种养老保险更合算,可以一次买吗?要多少... 我们家有营业执照。我现在41岁了。养老保险如何来买?一年,交多少钱? 搅拌桩的两喷两搅怎么理解 ...上关于一喷二搅、二喷二搅、二喷三搅、二喷四搅的具体做法 两搅两喷与四搅四喷的区别 三轴搅拌桩两搅四喷是什么意思 梦幻西游将军令怎么解绑 EXCEL表,求值? 毛绒玩具批发哪里的最便宜质量最好? 50岁至60岁晚上几点钟睡觉最好 每天的24小时分为12个时辰.分别是.子.丑....什么的 .请问早上8点50是什么时辰? 高级Java开发面试交流的要点有哪些 长沙哪有毛绒玩具批发的 这个剪力墙GBZ柱对吗 香港看午夜场电影多少钱 昆明最大最集中的毛绒玩具批发市场在哪里? GBZ-188-2014职业健康监护技术规范 charles这个英文名字的寓意是什么? 50多岁的人晚上几点休息最好 在图集中YBZ和GBZ有什么区别?做法相同。 java程序设计时在JFrame中要清除一个圆再画一个矩形该怎么清除? 什么叫午夜区 jeffrey英文名寓意是什么? 那里批发毛绒玩具最便宜? 如何定位java内存泄露 GB Pinyinok-B字体是免费使用么 如果需要购买版权方是哪里? 请问哪里有便宜的毛绒娃娃批发啊? 房建图纸中GBZ,DWQ表示什么意思? 国内比较大的毛绒玩具批发市场在哪里?知道的麻烦说下 七十三岁的女人老是给五十岁的男人深夜打电话,是啥意思? 努力,上进,积极,主动,这四个词用哪四个英语单词表达最恰当? 广州哪个区批发毛绒玩具最多的? FGC时老年代回收不彻底 和并发量有关系吗 石家庄最大的毛绒玩具批发市场在哪里? 想起个英文名,女生。要简单而特别一点的。性格阳光,乐观,积极向上。 午夜的12时与0时表示的时间是同一个时刻对吗? 成都的电影院最晚一场是好久?成都有没有午夜场的电影院啊?? 请问Cathy 这个英文名怎么读?? 午夜先生读后感50字 英文opheⅠⅰa什么意思? 一天之中驾驶员视力最不好的时候是午夜吗 y开头积极向上的英文名 午夜的掉率是多少? 全球恐怖电影前50排名是什么片名谢谢了,大神帮忙啊 “a”开头的英文单词有哪些是有积极意义的词 英语四级经常出现类似积极的主动的等情感的形容词 Bang&Olufsen BeoPlay H6 耳机怎么样 b&o beoplay h8 插耳机线 电源要不要打开