我问了一个有关自定义窗口小部件的问题,但对我是否需要它以及应该如何进行感到困惑。
我目前有这堂课
public class GUIEdge {
public Node node1;
public Node node2;
public int weight;
public Color color;
public GUIEdge(Node node1, Node node2 , int cost) {
this.node1 = node1;
this.node2 = node2;
this.weight = cost;
this.color = Color.darkGray;
}
public void draw(Graphics g) {
Point p1 = node1.getLocation();
Point p2 = node2.getLocation();
g.setColor(this.color);
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
}
目前,这在两点之间画了一条边,但是现在我希望同时创建成本标签。
我已经添加了用于拖动节点和边的处理,那么创建标签的最佳方法是什么
我需要为此制作一个自定义窗口小部件吗?谁能解释一下,假设是通过从JComponent扩展来制作一个组件,那么我将通过g.mixed()来调用它,其中新的小部件是混合的…?
工具提示当然值得一看。其他选择包括drawString()
,translate()
或TextLayout
。有许多可用的示例。
附录:@Catalina
Island建议,以下示例同时显示drawString()
和setToolTipText()
。为简单起见,端点是相对于组件大小的,因此您可以看到调整窗口大小的结果。
附录:的使用setToolTipText()
仅说明方法。就像@camickr在这里指出的那样,getToolTipText(MouseEvent)
当鼠标悬停在该行上或选中该行时,您应该覆盖并更新笔尖。
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JComponent;
import javax.swing.JFrame;
/** @see https://stackoverflow.com/questions/5394364 */
public class LabeledEdge extends JComponent {
private static final int N = 20;
private Point n1, n2;
public LabeledEdge(int w, int h) {
this.setPreferredSize(new Dimension(w, h));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
this.n1 = new Point(N, N);
this.n2 = new Point(getWidth() - N, getHeight() - N);
g.drawLine(n1.x, n1.y, n2.x, n2.y);
double d = n1.distance(n2);
this.setToolTipText(String.valueOf(d));
g.drawString(String.valueOf((int) d),
(n1.x + n2.x) / 2, (n1.y + n2.y) / 2);
}
private static void display() {
JFrame f = new JFrame("EdgeLabel");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new LabeledEdge(320, 240));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
display();
}
});
}
}
我不熟悉在R中使用plotly软件包,我想制作一个线图的动画。例如,如果我绘制一个国家的人均GDP(x轴)和预期寿命(y轴)。绘本 我尝试用plotly创建一个普通的折线图,并添加frame参数(frame=~year),但该图是空白的。 我如何使用Ploly的动画功能来制作线图动画? 此外,gganimate对我来说不是一个选项,因为在Windows上运行ImageMagick似乎有问题。
关于 Flash 图形 Flash (SWF) 文件格式是一种基于矢量的图形文件格式,它用于适合 Web 的可缩放小尺寸图形。由于这种文件格式基于矢量,因此,图稿可以在任何分辨率下保持其图像品质,并且非常适于创建动画帧。在 Illustrator 中,可以在图层上创建单独的动画帧,然后将图像图层导出到网站上使用的单独帧中。也可以在 Illustrator 文件中定义符号以减小动画的大小。在导出后,
使用PNG或JPG文件创建托盘,dock和应用程序图标。 进程: 主进程, 渲染进程 在 Electron 中, 对所有创建 images 的 api 来说, 你可以传递文件路径或 NativeImage 实例. 如果传递 null ,将创建一个空的image 对象. 例如, 当创建托盘图标或设置窗口图标时,你可以传递 String格式的文件路径 : 1 const {BrowserWindow
我尝试使用PyInstaller 3.2.1创建一个exe文件,出于测试目的,我尝试为以下代码创建一个exe: 经过相当长的时间(15min+),我完成了大到620 MB的dist文件夹和150 MB的build。我在Windows上使用Python 3.5.2Anaconda定制(64位)。值得注意的是,在dist文件夹中,mkl文件几乎占用了300 MB。我使用'pyinstaller.exe
创建一个Canvas画布,用于显示WebGL的渲染结果,canvas元素和div等元素一样是HTML的一个元素,只是Canvas画布具有2D和3D绘图功能。 <!--canvas标签创建一个宽高均为500像素,背景为蓝色的矩形画布--> <canvas id="webgl" width="500" height="500" style="background-color: blue"></canv
5.2.2 创建画布 为了绘图,首先要有画布。Tkinter 中提供了画布(Canvas),可以在画布上绘制图形、 文本,也可以在上面放置命令按钮等 GUI 构件。画布实际上是一个 Canvas 对象,它包含 一些属性(如画布的高度、宽度、背景色等),也包含一些方法(如在画布上创建图形、删 除或移动图形等)。 创建画布对象的语句模板如下: c = Canvas(<窗口>,<选项 1>=<值 1>,