如何使用java swing在jlist中的现有元素下添加新元素?

阿鲁纳查拉姆

我使用 jlist 来显示我的数据库数据。该过程适用于从数据库中获取数据并显示在 jlist 元素中。我需要通过单击事件在 jlist 元素下显示我的数据。示例:包含用户名的 Jlist,一旦我单击特定用户,它应该在 jlist 元素下方显示用户的属性。

建议我,如果有办法执行此过程或无法在特定 jlist 元素下显示。

提前致谢。

加内什帕特尔

@Arunachalam 这是使用DefaultTreeCellRenderer.

import java.awt.Component;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;

public class DatabaseTree implements TreeSelectionListener {

  JFrame frame;
  DefaultTreeModel treeModel;
  DefaultTreeCellRenderer cellRenderer;
  JScrollPane pane;
  JTree tree;
  Connection connection;
  PreparedStatement pst;
  ResultSet rs;
  List<String> databaseNode = new ArrayList<String>();

  public DatabaseTree() {
    // JFrame.setDefaultLookAndFeelDecorated(true);
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    DefaultMutableTreeNode root = new DefaultMutableTreeNode();
    root.setUserObject(new JLabel("Databases", new ImageIcon("/images/g.jpg"), JLabel.CENTER));
    treeModel = new DefaultTreeModel(root);
    try {
      Class.forName("com.mysql.jdbc.Driver");
      connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ganesh", "root",
          "admina");
      pst = connection.prepareStatement("show databases");
      rs = pst.executeQuery();
      while (rs.next()) {
        String text = rs.getString(1);
        databaseNode.add(text);
        root.add(new DefaultMutableTreeNode(new JLabel(text, new ImageIcon("/images/g.jpg"),
            JLabel.CENTER)));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    tree = new JTree(treeModel);
    tree.setCellRenderer(new MyTreeCellRenderer());
    tree.addTreeSelectionListener(this);
    tree.setRootVisible(true);
    tree.expandRow(0);
    pane = new JScrollPane(tree);
    frame.setContentPane(pane);
    frame.setVisible(true);

  }

  public static void main(String args[]) {
    new DatabaseTree();
  }

  @Override
  public void valueChanged(TreeSelectionEvent e) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.getPath().getLastPathComponent();
    String text = ((JLabel) node.getUserObject()).getText();
    JLabel label = null;
    if (databaseNode.contains(text)) {
      if (node.getChildCount() == 0) {
        try {
          pst = connection.prepareStatement("show tables in " + text);
          rs = pst.executeQuery();
          while (rs.next()) {
            String data = rs.getString(1);
            label = new JLabel(data);
            node.add(new DefaultMutableTreeNode(label));
          }
        } catch (Exception ee) {
          ee.printStackTrace();
        }
      }
    }
  }

  class MyTreeCellRenderer extends DefaultTreeCellRenderer {

    JLabel label;

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,
                                                  boolean expanded, boolean leaf, int row,
                                                  boolean hasFocus) {

      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
      label = (JLabel) node.getUserObject();

      if (selected) {
        label.setBackground(backgroundSelectionColor);
        label.setForeground(textSelectionColor);
      } else {
        label.setBackground(backgroundNonSelectionColor);
        label.setForeground(textNonSelectionColor);
      }
      return label;
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将新元素添加到现有数组中

来自分类Dev

使用 Powershell 在现有 XML 文档中创建新元素

来自分类Dev

添加新元素后,如何使Jlist自动向下滚动

来自分类Dev

如何防止新元素覆盖d3.js中的现有元素?

来自分类Dev

如何防止新元素覆盖d3.js中的现有元素?

来自分类Dev

如何在DenseVector中添加新元素

来自分类Dev

如何在Reactjs中添加新元素

来自分类Dev

算法:如何将固定长度的圆形阵列中的新元素尽可能地远离现有元素?

来自分类Dev

使用Xquery向现有XML中的元素添加属性

来自分类Dev

如何将具有给定索引的新元素添加到链表中?

来自分类Dev

使用BorderLayout和现有JScrollPane将Swing元素添加到JFrame

来自分类Dev

Java队列中添加的新元素在哪里

来自分类Dev

如何要求用户在 DialogFlow 中添加新元素?

来自分类Dev

PHP - 使用 for 循环在数组中添加新元素?

来自分类Dev

如何使用jQuery向生成的元素添加新元素?

来自分类Dev

如何将元素添加到现有元素而不是在列表中覆盖它们?

来自分类Dev

算法:如何将固定长度的圆形数组中的新元素尽可能地远离现有元素?

来自分类Dev

如何在mongo中使用$ addFields将元素添加到现有文档中?

来自分类Dev

添加新元素后如何更新列表

来自分类Dev

xsl使用名称空间添加新元素

来自分类Dev

使用powershell向xml添加新元素

来自分类Dev

将新元素添加到现有XML中

来自分类Dev

通过使用丰富介体在WSO2 EI中向JSON有效负载动态添加新元素

来自分类Dev

如何添加新元素并从关联数组中删除一些旧元素?

来自分类Dev

如何使用angularjs从弹出窗口向表中添加新元素

来自分类常见问题

如何在Java中替换ArrayList元素的现有值

来自分类Dev

如何将MongoDB中的元素数组添加到现有文档中的数组?

来自分类Dev

使用jQuery检查是否有新元素

来自分类Dev

如何在没有push_array的情况下将新元素插入多维数组?

Related 相关文章

  1. 1

    如何将新元素添加到现有数组中

  2. 2

    使用 Powershell 在现有 XML 文档中创建新元素

  3. 3

    添加新元素后,如何使Jlist自动向下滚动

  4. 4

    如何防止新元素覆盖d3.js中的现有元素?

  5. 5

    如何防止新元素覆盖d3.js中的现有元素?

  6. 6

    如何在DenseVector中添加新元素

  7. 7

    如何在Reactjs中添加新元素

  8. 8

    算法:如何将固定长度的圆形阵列中的新元素尽可能地远离现有元素?

  9. 9

    使用Xquery向现有XML中的元素添加属性

  10. 10

    如何将具有给定索引的新元素添加到链表中?

  11. 11

    使用BorderLayout和现有JScrollPane将Swing元素添加到JFrame

  12. 12

    Java队列中添加的新元素在哪里

  13. 13

    如何要求用户在 DialogFlow 中添加新元素?

  14. 14

    PHP - 使用 for 循环在数组中添加新元素?

  15. 15

    如何使用jQuery向生成的元素添加新元素?

  16. 16

    如何将元素添加到现有元素而不是在列表中覆盖它们?

  17. 17

    算法:如何将固定长度的圆形数组中的新元素尽可能地远离现有元素?

  18. 18

    如何在mongo中使用$ addFields将元素添加到现有文档中?

  19. 19

    添加新元素后如何更新列表

  20. 20

    xsl使用名称空间添加新元素

  21. 21

    使用powershell向xml添加新元素

  22. 22

    将新元素添加到现有XML中

  23. 23

    通过使用丰富介体在WSO2 EI中向JSON有效负载动态添加新元素

  24. 24

    如何添加新元素并从关联数组中删除一些旧元素?

  25. 25

    如何使用angularjs从弹出窗口向表中添加新元素

  26. 26

    如何在Java中替换ArrayList元素的现有值

  27. 27

    如何将MongoDB中的元素数组添加到现有文档中的数组?

  28. 28

    使用jQuery检查是否有新元素

  29. 29

    如何在没有push_array的情况下将新元素插入多维数组?

热门标签

归档