1.有示例Demo给我发一份435718349@qq.com
2.有java布局思路也行
3.有环形布局如下图,图是由工具生成的。代码找了很久都没找到。
4.感激不尽,也可以qq联系我。

package com.tur.demo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
public class Hello extends JPanel {
private java.util.List<MyLabel> labels = new java.util.ArrayList<MyLabel>();
public Hello() {
setLayout(null);
// 创建labels
addLabel(50, 50);
addLabel(250, 100);
addLabel(100, 200);
addLabel(250, 300);
// 建立label之间的连接.
labels.get(0).addConnectToLabel(labels.get(1));
labels.get(1).addConnectToLabel(labels.get(2));
labels.get(1).addConnectToLabel(labels.get(3));
}
private void addLabel(int x, int y) {
MyLabel label = new MyLabel();
label.setLocation(x, y);
this.add(label);
labels.add(label);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
for (MyLabel label : labels) {
for (MyLabel toLabel : label.getConnectToLabels()) {
Line2D line = new Line2D.Float(label.getCentralPoint(), toLabel.getCentralPoint());
g2d.draw(line);
// 接下来计算line与label的交点,然后在交点处画三角形.
}
}
}
private static void createAndShowGui() {
JFrame frame = new JFrame("");
frame.getContentPane().add(new Hello());
// Set frame's close operation and location in the screen.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
createAndShowGui();
}
}
class MyLabel extends JLabel {
private Point delta = new Point();
private java.util.List<MyLabel> connectToLabels = new java.util.LinkedList<MyLabel>();
public MyLabel() {
setSize(80, 30);
setOpaque(true);
setBackground(Color.YELLOW);
setHorizontalAlignment(CENTER);
handleEvents();
}
public Point2D getCentralPoint() {
Point pos = this.getLocation();
Point2D cp = new Point2D.Double();
cp.setLocation(pos.x + getWidth() / 2, pos.y + getHeight() / 2);
return cp;
}
public void addConnectToLabel(MyLabel label) {
connectToLabels.add(label);
}
public java.util.List<MyLabel> getConnectToLabels() {
return connectToLabels;
}
@Override
public void setLocation(Point pos) {
setLocation(pos.x, pos.y);
}
@Override
public void setLocation(int x, int y) {
super.setLocation(x, y);
setText("[" + x + ", " + y + "]");
}
private void handleEvents() {
MouseAdapter adapter = new MouseEventHandler();
addMouseListener(adapter);
addMouseMotionListener(adapter);
}
class MouseEventHandler extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
delta.setLocation(p.x, p.y);
}
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
Point pos = new Point();
pos.setLocation(p.x - delta.x, p.y - delta.y);
SwingUtilities.convertPointToScreen(pos, MyLabel.this);
SwingUtilities.convertPointFromScreen(pos, getParent());
setLocation(pos);
getParent().repaint();
}
}
}
int centerX = 400;//圆心坐标 int centerY = 300; int radius = 200;//半径 //count: 节点数目 for (int i= 0; i; i++) { int x =
百度# Java▲ 7 简述 Java 的反射机制及其应用场景▲ 6 String 为什么是 final?▲ 6 volatile 关键字解决了什么问题,它的实现原理是什么?# C++▲ 13 简述 C++ 中智能指针的特点,简述 new 与 mal...
单链表介绍和内存布局 链表是有序的列表,但是内存中是实际存储结构如下: 小结: 1.链表是以节点的方式来存储,是链式存储(即各个节点之间并不一定是连续存储的,而是相互指向的); 2.每个节点包含 data 域:存放...
文章目录第三章 链表单链表介绍和内存布局单链表创建和遍历的分析实现添加(创建)过程遍历过程代码实现单链表按顺序插入节点单链表节点的修改单链表节点的删除和小结单链表面试题新浪面试题腾讯面试题百度面试题...
从1开始学Java数据结构与算法——单链表的使用单链表的特点单链表的代码思路分析方法详细思路分析单链表的代码实现小问题: 单链表的特点 1.链表是以节点的方式存储的 2.每个节点包含data域,用来存放数据;和next域...
1.单链表的介绍和内存布局 1.1链表是有序的列表,以节点的方式进行存储,每个节点包含data域,next域; (1)data域:存储数据;next域:指向下一个节点 1.2 链表的各个节点不一定是连续存储的 1.3 链表...
通俗易懂的数据结构和算法教程(含配套资料) 张长志技术全才、擅长领域:区块链...
内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡...
夹逼定理、单调有界定理
本文章由公号【开发小鸽】发布!欢迎关注!!! 老规矩–妹妹镇楼: 一. 分代收集理论 (一) 假说 ...当前商用虚拟机的垃圾收集器大都遵循了分代...收集器根据这两个假说将Java堆划分出不同的区域,一个区域中的对
目录 目录 …1 JVM … 19 2.1. 线程 … 20 2.2. JVM 内存区域 … 21 2.2.1. 程序计数器(线程私有) … 22 2.2.2. 虚拟机栈(线程私有) … 22 2.2.3. 本地方法区(线程私有) … 23 2.2.4. 堆(Heap-线程共享)-运行时...
哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题,Java中HashMap采用了链地址法。链地址法,简单来说,就是数组加链表的结合。在每个数组元素上都一个链表结构,当数据被Hash后,得到数组下标,把数据...
目录一、垃圾收集算法1.1 堆的布局1.2 GC类型1.2.1 Minor GC流程1.2.2 分配担保1.3 内存分配策略二、垃圾收集算法2.1 标记-清除算法2.2 标记-复制算法2.3 标记-整理算法三、HotSpot的算法细节实现3.1 根节点枚举3.2 ...
今天看到网易社招Java岗位的面试题,大致浏览了下,发现还没有答案出来,所以自己就搜索整理下,将答案分享出来,由于水平有限,如发现错误或者疑问,欢迎斧正和讨论,大家一起进步 1. redis有哪几种数据结构?给你...
我们平时去下载的文件或者视频都会有很多的前缀部分,有些前缀过长,也无法一一单独修改文件名。所以令人烦恼、但是作为程序猿,这都不是事。...import java.io.File; import java.io.IOException; /** ...
1、线程和进程的关系 根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。 资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;...
2019年Java面试675道题 目录 java基础、语法 30 001_Java跨平台原理(字节码文件、虚拟机) 30 002_Java的安全性 31 003_Java三大版本 32 004_什么是JVM?什么是JDK? 什么是JRE? 32 005_Java三种注释类型 ...
https://github.com/Trinea/android-open-project
(一)Redis
文章目录一、java模块面试问题1.动态代理2.浏览器禁用Cookie后的Session处理3.主从复制的流程[重要]5.redis的数据类型[重要]6.Junit测试的注解7、缓存问题二、项目中java模块的难点异常[重要]1.MultipartiFile图片从...
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)
感谢牛客网! 文章目录Java基础知识计算机网络知识MySQL常用数据结构操作系统SpringRedisMybatisRocketMq场景题手撕代码其他技能相关 Java基础知识 重载与重写 、 多态 (1次) collection 和 Collections的区别 ...
多数是c/c++,也有少量java基础和其他知识,貌似应该叫《计算机基础问题汇总》比较好。不断更新~~一、new 跟 malloc 的区别是什么?1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符2.new能够自动...
a) -->负载均衡(硬件、软件)/DNS -->名称服务 -->规则服务器 -->Master-Worker -->阿姆达尔定律 ...-->互不通信,没有交集,各自执行各自的任务和逻辑 ...-->基于共享容器(如队列)协同的多线程模式->生产者-消费者-...
引用计数器算法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器加一;当引用失效时,计数器值减一;任何时刻计数器为 零就是不可能被使用的。 原理简单,判定高效 产生循环引用问题。A->B->C-...
1 构造函数
目录 前言 本书涵盖的内容 这本书需要什么 这本书是给谁的 约定 读者反馈 客户支持 下载示例代码 下载本书的彩色图像 勘误 海盗行为 问题 1. Pentaho报告简介 介绍Pentaho报告 ...Pentaho报告历史记...
大家都知道程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,就是从阿里出来...
通过大量的实战编码进行讲解,课程以Hello world为切入点。 第一章:对spring boot的特性、优缺点、场景进行详细讲解。 第二章:springboot核心功能 第三章:热部署的几种模式 第四章:Web开发的各种技术 第五章:数据访问层:spring data jpa、jdbctemplate、mybatis、redis 第六章:异常相关的处理 课程以实战为主,理论为辅相结合,学习完成后能实际参与spring boot的项目开发为目的。
敏捷开发PPT 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。