`

Swing界面实现心形

    博客分类:
  • Java
阅读更多

Swing界面实现心形

       一直想用Java中的swing组件通过Graphics实现在界面上画一个心形,请教了一位学姐,终于成功了。现在做个总结。

       主要是算法设计,其实也称不上算法,因为我在实现的时候是通过界面运行结果来调整坐标,根本没有什么可移植性,不过应该可以通过简单的平面几何设计算法。今天就先看看这个半产品吧。

这个大致思路是在界面上先用Graphics画出两个相交的圆(相交程度根据运行结果调整尴尬),在两交点连线延长线上截取适当距离选点,通过这点分别画出两圆的切线。然后把两圆与两线围起的图形填充。OK,心形”完美“呈现。由于计算值与像素点整数值总是有相当大的差别。因此我建议调整很重要,尽管很麻烦。具体代码如下:

package 界面心形;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Heart extends JFrame {
	  Graphics  g ;
      public void Init(){
    	  //创建界面
    	  this.setTitle("love");
    	  this.setSize(500, 500);
    	  this.setLocationRelativeTo(null);
    	  FlowLayout flow = new FlowLayout();
    	  this.setLayout(flow);
    	  JButton jbu = new JButton("按我");
    	  this.setDefaultCloseOperation(3);
    	  this.add(jbu);
    	  this.getContentPane().setBackground(Color.black);
    	  this.setVisible(true);
    	  
    	  try {
			Thread.sleep(100);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
    	  
         g = this.getGraphics();
         ActionListener l = new MyListener(g) ;
         jbu.addActionListener(l);
         

      }
      
      public static void main(String[] args) {
		Heart heart = new Heart();
		heart.Init();
	}
}

 

package 界面心形;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyListener implements ActionListener {
	Graphics g;
     public MyListener(Graphics g) {
		
    	 this.g = g;
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if("按我".equals(e.getActionCommand())){
			
		g.setColor(Color.red);
		 
		//去掉锯齿状,后来发现不去更好一些,使偏差不明显
    //((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING , RenderingHints.VALUE_ANTIALIAS_ON);
       
		//画两圆
		int x1=100, y1=100, r=30;
        g.fillOval(x1-r, y1-r, 2*r, 2*r);
        g.fillOval((int)x1+r-10, y1-r, 2*r, 2*r);
        //画切线
        g.drawLine(125, y1+5/2*r, (int)(126-30*Math.sqrt(3)), 115);
        //循环填充
        for(int i=125;i<=228;i++){
        	g.drawLine(125, y1+5/2*r, (int)(i-30*Math.sqrt(3)), 115);
        }
        //浪一下,设置“love”字体,因为有的地方画两遍,用字体挡住颜色不均匀的地方
        g.setColor(Color.blue);
        Font font = new Font("love", Font.BOLD,32); 
        g.setFont(font);
        g.drawString("love", x1-6, y1+22);
	}

 运行结果如下:

 还不算太丑,哈哈,大家也试着做做吧。

 

 

  • 大小: 50.9 KB
分享到:
评论

相关推荐

    最牛的心形图java版本

    此外,还可能使用Java的图形库,如JavaFX或Swing,创建图形用户界面(GUI),以更直观的方式展示心形图,提供更多的交互性和视觉效果。 学习这样的项目可以帮助初学者更好地理解Java的基础语法,包括循环、条件语句...

    java画的心形线源码

    首先,要绘制图形,我们需要创建一个继承自`JFrame`的类,这是Java Swing中的顶级容器,可以用来展示图形界面。在`JFrame`中,我们通常会添加一个`JPanel`作为绘图区域,并重写`paintComponent(Graphics g)`方法,这...

    toLover-V1.0 含文档(玫瑰花屏保、画心形)

    Java AWT 和 Swing 库提供了对图形用户界面(GUI)的支持,其中 `AlphaComposite` 类可以用来设置图形的透明度,通过调整其 alpha 值来实现不同程度的透明效果。同时,可能还会用到 `Graphics2D` 类,它支持更高级的...

    java实现3D爱心效果.zip

    在Java编程语言中,实现3D爱心效果是一项有趣且具有挑战性的任务,它涉及到图形学、数学以及Java Swing或JavaFX等图形用户界面库的使用。这个项目可能包含多个文件,如"M"可能是主类,"Love"可能是表示爱心形状的类...

    java编写的烟花效果

    在Java中,我们通常使用JavaFX或Swing库来创建图形界面。在这个项目中,可能会使用JavaFX,因为它提供了更现代的特性和更好的动画支持。开发者可能创建了一个自定义的Canvas组件,通过GraphicsContext对象绘制每一帧...

    Java绘图

    这个项目名为"Java绘图",显然聚焦于利用Java语言实现图形界面交互,用户可以通过点击按钮触发不同的绘图操作。下面将详细阐述涉及的知识点。 首先,Java绘图主要依赖于Java AWT(Abstract Window Toolkit)和Swing...

    fileutils-1.0.zip

    总的来说,`fileutils-1.0.zip`提供的评级组件简化了Java Swing应用中的用户评级功能的实现,使得开发者无需从零开始编写复杂的图形界面和交互逻辑,提高了开发效率并保持了良好的用户体验。开源项目的特性也意味着...

    动态爱心代码动态爱心代码

    3. Java: 在Java中,我们可以利用JavaFX或Swing库来创建图形用户界面。通过定义定时器和事件处理,可以制作出在窗口中移动或变换的爱心。JavaFX提供了丰富的动画API,如Timeline和Transition,使得创建复杂的动画...

    如何用Java设计爱心源码

    AWT(Abstract Window Toolkit)是Java的基础图形用户界面(GUI)库,而Swing是建立在AWT之上的更现代的GUI库,提供了更多的组件和功能。 首先,我们从创建项目开始。在Eclipse或其他Java IDE(如IntelliJ IDEA或...

    具有异形窗口的网络电话

    3. **图形用户界面编程**:在实现异形窗口的网络电话中,开发者需要掌握图形用户界面的编程技巧,例如使用Windows API、Java Swing或JavaFX、C# WPF、Qt等框架来设计和控制窗口的外观和行为。 4. **事件处理**:当...

    java爱心代码.zip

    如果想要在图形用户界面(GUI)中展示爱心,可以使用Swing或JavaFX库。这两个库提供了丰富的组件和工具,用于创建桌面应用。在JFrame或Stage上添加一个自定义组件,然后重写其`paintComponent()`方法来绘制爱心。...

    爱心源码(有趣的一段源码)

    类`Heart`继承自`JFrame`,这是Java Swing库中的一个组件,通常用于构建图形用户界面(GUI)。然而,这个`Heart`类并没有真正利用`JFrame`的功能,而是使用它作为程序的入口点。`main`方法是Java程序的起点,调用了`...

    爱心源码,生成简单的和复杂的爱心

    这个项目涉及到GUI编程,通常使用Java的Swing或JavaFX库来创建图形界面。通过这些库,开发者可以创建窗口、按钮、文本框等组件,并监听用户的交互事件。在这个案例中,源码可能包含了使用特定的图形方法来绘制爱心...

    JAVA情人节主题爱心代码.zip

    在Java编程语言中,我们可以利用其强大的图形用户界面(GUI)功能来创建有趣的应用,比如情人节主题的爱心代码。这个“JAVA情人节主题爱心代码.zip”压缩包包含了一个名为“JAVA情人节主题爱心代码.txt”的文本文件...

    《Java基础》实验题和课程设计补充题.doc

    1. **图形用户界面**:涉及计算器、货币转换、日期组件、月历组件等,这些都是使用Java Swing或JavaFX库来创建的,要求学生理解组件的使用和事件监听机制。 2. **算术运算**:包括算术表达式计算、复数运算、进制...

    《Java基础》实验题和课程设计补充题.docx

    3. **对象信息管理**:涉及到类的设计和对象的创建,以及如何通过图形用户界面(GUI)展示和管理对象信息,可能需要用到`JFrame`、`JButton`、`JTable`等Swing组件。 4. **文本编辑器和银行贷款计算**:需要实现...

    爱心源码,希望大家有对象

    在提供的代码中,可以看到一个名为 `HH` 的类继承自 `JFrame`,这表明它是一个基于 Java Swing 的图形用户界面(GUI)应用。`HH` 类包含了窗口的基本设置,如标题、位置、大小、背景色以及关闭行为。关键的方法是 `...

    Java--女朋友的生日礼物

    蛋糕的展示则可能涉及到图形用户界面(GUI)的设计。Java提供了Swing或JavaFX库来创建GUI应用。你可以创建一个自定义的组件,比如一个JPanel,然后在上面绘制蛋糕的图片或者使用Java2D API绘制出动态的蛋糕动画,如...

    爱心源码-基于Java画爱心源码程序

    - **图形API**:Java提供了丰富的`java.awt`和`javax.swing`包,用于处理图形用户界面(GUI)和图形绘制。在这个项目中,可能会使用`Graphics2D`类来绘制线条和形状。 2. **绘图原理** - **坐标系统**:Java中的...

    java心型99朵玫瑰程序

    4. 用户界面(UI)设计:此程序可能使用了Java Swing或JavaFX库来创建图形用户界面。Swing是Java的基础UI框架,可以创建窗口、按钮、文本框等组件。而JavaFX提供了更现代、更丰富的UI组件和特效,使得程序的视觉效果...

Global site tag (gtag.js) - Google Analytics