相关疑难解决方法(0)

如何打印二叉树图?

如何在Java中打印二叉树,以便输出如下:

   4 
  / \ 
 2   5 
Run Code Online (Sandbox Code Playgroud)

我的节点:

public class Node<A extends Comparable> {
    Node<A> left, right;
    A data;

    public Node(A data){
        this.data = data;
    }
}
Run Code Online (Sandbox Code Playgroud)

java printing binary-tree

153
推荐指数
10
解决办法
19万
查看次数

在java上绘制图形

我想在Java中绘制图形(节点和边).但是,由于我不知道如何去做,我想在开始之前先给出一些建议.

我该怎么做?

使用Graphics2D包,对吗?

节点的标签怎么样?我应该使用drawString之类的东西并手动处理所有"居中"或为此创建一个JLabel吗?我可以在Graphics2D环境中放置JLabel吗?

我搜索过但没有找到任何简单的实现.如果您知道其中一个,请在答案中提供链接.

编辑:我正在寻找的解决方案应该能够删除节点,拖动节点,编辑标签,创建节点,所有这些都与鼠标事件.

谢谢.

java drawing graph nodes

20
推荐指数
4
解决办法
5万
查看次数

根据深度级别更改JTree节点图标

我正在寻找改变我的JTree(Swing)的不同图标

java文档解释了如果节点是否为叶子,如何更改图标,但这不是我正在搜索的内容.

对我来说,如果一个节点是一个叶子,或者我只是想在节点处于三个节点的第一/第二/第三深度级别时更改图标.

java icons swing jtree

9
推荐指数
2
解决办法
4861
查看次数

在jsplitpane中的jscrollpane中调整canvas的问题

我正在使用NetBeans GUI编辑器创建一个应用程序,我希望在其中有一个JSplitPane,其顶部组件将Canvas在a中JScrollPane,而底部组件将是a JTextArea或类似的东西.

当我向下拉分隔器,从而增加顶部组件的大小时,一切似乎都调整得很好.

当我试图向上推动分频器时出现问题:分频器似乎在Canvas(也可能在它下面JScrollPane)下方.

我试图首选/最小/最大的尺寸的各种组合JScrollPaneCanvas,但似乎没有任何工作.

这是Netbeans生成的代码的一部分,可能与手头的问题有关:

jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
canvas1 = new java.awt.Canvas();
jTextField1 = new javax.swing.JTextField();

jSplitPane1.setDividerLocation(300);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

jScrollPane1.setViewportView(canvas1);

jSplitPane1.setTopComponent(jScrollPane1);

jTextField1.setText("jTextField1");
jSplitPane1.setRightComponent(jTextField1);
Run Code Online (Sandbox Code Playgroud)

由于这是我的第一个问题,我不允许在问题中嵌入图像,因此我将发布链接:

红色箭头表示分隔线的位置.

在此先感谢您的时间.

java swing jscrollpane jsplitpane

7
推荐指数
2
解决办法
7837
查看次数

打印树有4个节点(简单森林)用于检查基准

我使用实施实验OOP语言和现在的基准垃圾收集存储性能基准测试.现在我想检查/打印下面的小深度基准(n = 2,3,4,..).

通过该buildTreeDepth方法生成树(具有4个子节点的林).代码如下:

import java.util.Arrays;

public final class StorageSimple {

    private int count;
    private int seed = 74755;

    public int randomNext() {
        seed = ((seed * 1309) + 13849) & 65535;
        return seed;
    }

    private Object buildTreeDepth(final int depth) {
        count++;
        if (depth == 1) {
            return new Object[randomNext() % 10 + 1];
        } else {
            Object[] arr = new Object[4];
            Arrays.setAll(arr, v -> buildTreeDepth(depth - 1));
            return arr;
        }
    }

    public Object benchmark() { …
Run Code Online (Sandbox Code Playgroud)

java tree benchmarking microbenchmark

6
推荐指数
1
解决办法
135
查看次数