画图中的布局

Java GUI编程基础

2016.12.05

 

突然发现把前面关于画图的一部分忘的差不多了,现在打算重新来好好看看,尽量把基础打牢一点。



 看一下这幅图,了解一下顶级容器,中间容器以及组件的关系。

1.创建顶层容器

对应于程序的初始化窗口,窗口中放入其它菜单、工具栏、文本框、按钮等各种组件。

顶层容器是其它图形界面显示的基础,其它组件都是直接或者间接显示在顶层容器中,

在java顶层容器有3种,分别是JFrame(框架窗口),JDialog(对话框)、JApplet(用于设计嵌入到网页中的java小程序),设置图形化程序必须要有顶层容器。

2.创建中间容器、组件

对应于程序中出现的菜单、工具栏(中间容器)、文本框、按钮、单选框、复选框等控件。

3.将组件加入容器

在java创建组件后,还需要将组件放入相应的容器,才能在顶层容器,如窗口中显示出组件。

4.设置容器内组件的位置

两种,即按照与容器的相对距离,用布局管理器来管理组件在容器内的位置。

5.处理组件所产生的事件。

常见的中间容器有:

JPanel:最灵活、最常用的中间容器

JScrollPane:与Jpanel类似,但可在大的组件或可扩展组件周围提供滚动条。



 

BorderLayout//边框布局

        该布局包含多个子面板,是一个面向应用的UI风格的布局,它将整个容器分为5个部分,分别是:east(东)、south(南)、west(西)、north(北)和center(中)。

FlowLayout//流式布局特征如下

不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。

设置FlowLayout 布局:

JFrame  fr=new JFrame( );

FlowLayout  flow=new FlowLayout( );

fr.setLayout(flow);

上面的语句可以简化成:
fr.setLayout(new FlowLayout());

设置框架fr为组件左对齐的FlowLayout布局

fr.setLayout(newFlowLayout(FlowLayout.LEFT));

设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。

fr.setLayout(new  FlowLayout(FlowLayout.LEFT,20,40));

 


 

 

### Python 图形绘制中的节点布局方法及库 在 Python 中实现图形的节点布局主要依赖于特定的数据结构和绘图库的支持。对于复杂的网络或图表,良好的布局能够显著提升可视化的可读性和美观度。 #### 使用 Matplotlib 进行简单节点布局 Matplotlib 是一个广泛使用的二维绘图库,在处理简单的节点关系图时非常有效。然而,其内置功能相对有限,通常用于基础的散点图、折线图等[^1]。 ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.scatter([0.3], [0.5]) # 单独放置一个节点 plt.show() ``` #### 利用 NetworkX 实现更高级别的节点布局 NetworkX 提供了丰富的接口来创建复杂的关系网,并支持多种自动布局算法,如圆形布局(`circular_layout`)、随机布局(`random_layout`)、壳层布局(`shell_layout`)以及弹簧模型布局(`spring_layout`)[^2]。 ```python import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() edges = [(0, 1), (1, 2), (2, 3)] G.add_edges_from(edges) pos = nx.spring_layout(G) # 应用弹簧力导向布局算法 nx.draw_networkx_nodes(G, pos, node_size=700) nx.draw_networkx_labels(G, pos) nx.draw_networkx_edges(G, pos, edgelist=G.edges(), edge_color='black') plt.axis('off') plt.show() ``` 需要注意的是,在某些情况下使用 `nx.draw_graphviz()` 函数可能会遇到兼容性问题,尤其是在较旧版本的 Python 或者安装环境不完善的情况下[^3]。 #### Graphviz 的集成应用 Graphviz 是专门设计用来描述各种类型的图和网络的强大工具集。通过 PyDot 或 pygraphviz 包可以在 Python 中调用 Graphviz 来生成高质量的有向无环图(DAGs),并能很好地解决上述提到的部分布局难题[^4]。 ```python from graphviz import Digraph dot = Digraph(comment='The Round Table') dot.node('A', 'King Arthur') dot.node('B', 'Sir Bedevere the Wise') dot.edge('A', 'B') print(dot.source) # doctest: +NORMALIZE_WHITESPACE # 输出 DOT language source code to console dot.render('test-output/round-table.gv', view=True) # 渲染图像文件并打开查看器 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值