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); }
运行结果如下:
还不算太丑,哈哈,大家也试着做做吧。
相关推荐
此外,还可能使用Java的图形库,如JavaFX或Swing,创建图形用户界面(GUI),以更直观的方式展示心形图,提供更多的交互性和视觉效果。 学习这样的项目可以帮助初学者更好地理解Java的基础语法,包括循环、条件语句...
首先,要绘制图形,我们需要创建一个继承自`JFrame`的类,这是Java Swing中的顶级容器,可以用来展示图形界面。在`JFrame`中,我们通常会添加一个`JPanel`作为绘图区域,并重写`paintComponent(Graphics g)`方法,这...
Java AWT 和 Swing 库提供了对图形用户界面(GUI)的支持,其中 `AlphaComposite` 类可以用来设置图形的透明度,通过调整其 alpha 值来实现不同程度的透明效果。同时,可能还会用到 `Graphics2D` 类,它支持更高级的...
在Java编程语言中,实现3D爱心效果是一项有趣且具有挑战性的任务,它涉及到图形学、数学以及Java Swing或JavaFX等图形用户界面库的使用。这个项目可能包含多个文件,如"M"可能是主类,"Love"可能是表示爱心形状的类...
在Java中,我们通常使用JavaFX或Swing库来创建图形界面。在这个项目中,可能会使用JavaFX,因为它提供了更现代的特性和更好的动画支持。开发者可能创建了一个自定义的Canvas组件,通过GraphicsContext对象绘制每一帧...
这个项目名为"Java绘图",显然聚焦于利用Java语言实现图形界面交互,用户可以通过点击按钮触发不同的绘图操作。下面将详细阐述涉及的知识点。 首先,Java绘图主要依赖于Java AWT(Abstract Window Toolkit)和Swing...
当我们启动这个名为`HH`的Java程序时,它会创建一个基于Swing的图形用户界面,一个简单的窗口随着窗口打开而出现。在这个窗口中,我们将会看到一个用像素精心绘制出来的爱心。这个爱心是通过Java的`JFrame`类的`...
总的来说,`fileutils-1.0.zip`提供的评级组件简化了Java Swing应用中的用户评级功能的实现,使得开发者无需从零开始编写复杂的图形界面和交互逻辑,提高了开发效率并保持了良好的用户体验。开源项目的特性也意味着...
AWT(Abstract Window Toolkit)是Java的基础图形用户界面(GUI)库,而Swing是建立在AWT之上的更现代的GUI库,提供了更多的组件和功能。 首先,我们从创建项目开始。在Eclipse或其他Java IDE(如IntelliJ IDEA或...
3. **图形用户界面编程**:在实现异形窗口的网络电话中,开发者需要掌握图形用户界面的编程技巧,例如使用Windows API、Java Swing或JavaFX、C# WPF、Qt等框架来设计和控制窗口的外观和行为。 4. **事件处理**:当...
如果想要在图形用户界面(GUI)中展示爱心,可以使用Swing或JavaFX库。这两个库提供了丰富的组件和工具,用于创建桌面应用。在JFrame或Stage上添加一个自定义组件,然后重写其`paintComponent()`方法来绘制爱心。...
类`Heart`继承自`JFrame`,这是Java Swing库中的一个组件,通常用于构建图形用户界面(GUI)。然而,这个`Heart`类并没有真正利用`JFrame`的功能,而是使用它作为程序的入口点。`main`方法是Java程序的起点,调用了`...
这个项目涉及到GUI编程,通常使用Java的Swing或JavaFX库来创建图形界面。通过这些库,开发者可以创建窗口、按钮、文本框等组件,并监听用户的交互事件。在这个案例中,源码可能包含了使用特定的图形方法来绘制爱心...
在Java编程语言中,我们可以利用其强大的图形用户界面(GUI)功能来创建有趣的应用,比如情人节主题的爱心代码。这个“JAVA情人节主题爱心代码.zip”压缩包包含了一个名为“JAVA情人节主题爱心代码.txt”的文本文件...
1. **图形用户界面**:涉及计算器、货币转换、日期组件、月历组件等,这些都是使用Java Swing或JavaFX库来创建的,要求学生理解组件的使用和事件监听机制。 2. **算术运算**:包括算术表达式计算、复数运算、进制...
3. **对象信息管理**:涉及到类的设计和对象的创建,以及如何通过图形用户界面(GUI)展示和管理对象信息,可能需要用到`JFrame`、`JButton`、`JTable`等Swing组件。 4. **文本编辑器和银行贷款计算**:需要实现...
蛋糕的展示则可能涉及到图形用户界面(GUI)的设计。Java提供了Swing或JavaFX库来创建GUI应用。你可以创建一个自定义的组件,比如一个JPanel,然后在上面绘制蛋糕的图片或者使用Java2D API绘制出动态的蛋糕动画,如...
- **图形API**:Java提供了丰富的`java.awt`和`javax.swing`包,用于处理图形用户界面(GUI)和图形绘制。在这个项目中,可能会使用`Graphics2D`类来绘制线条和形状。 2. **绘图原理** - **坐标系统**:Java中的...
4. 用户界面(UI)设计:此程序可能使用了Java Swing或JavaFX库来创建图形用户界面。Swing是Java的基础UI框架,可以创建窗口、按钮、文本框等组件。而JavaFX提供了更现代、更丰富的UI组件和特效,使得程序的视觉效果...
6. **图形界面设计**:可能包含UI/UX设计,以提供良好的用户体验,尤其是在屏幕上呈现心形图案。 7. **算法与数据结构**:心形的绘制可能涉及几何算法,比如贝塞尔曲线,以生成平滑的心形线条。 这个项目可以作为一...