Java 从JTree获取节点值,并使用JButton在JTable中显示它

Java 从JTree获取节点值,并使用JButton在JTable中显示它,java,swing,jtable,jbutton,jtree,Java,Swing,Jtable,Jbutton,Jtree,我知道这是简单而愚蠢的问题,因为我是新手,不知道如何链接 我正在尝试获取一个(带有路径的文件),并使用JButton-‘添加文件’将节点值推送到JTable中,我已经发布了到目前为止的代码。我已经尝试过了,它没有给出任何错误,但它没有执行我想要的操作,请告诉我这方面的说明,谢谢 如何从一个函数到另一个函数获取节点值,谢谢 从JTree获取节点值 File root = new File(System.getProperty("user.home")); FileTreeModel

我知道这是简单而愚蠢的问题,因为我是新手,不知道如何链接

我正在尝试获取一个(带有路径的文件),并使用JButton-‘添加文件’将节点值推送到JTable中,我已经发布了到目前为止的代码。我已经尝试过了,它没有给出任何错误,但它没有执行我想要的操作,请告诉我这方面的说明,谢谢

如何从一个函数到另一个函数获取节点值,谢谢

从JTree获取节点值

    File root = new File(System.getProperty("user.home"));
    FileTreeModel model = new FileTreeModel(root);
    JTree tree = new JTree(model);
    JScrollPane scrollpane = new JScrollPane(tree);
    scrollpane.setBounds(10, 9, 304, 730);
    frmViperManufacturingRecord.getContentPane().add(scrollpane);


    tree.addTreeSelectionListener(new TreeSelectionListener() {
        public void valueChanged(TreeSelectionEvent e) {
            File node = (File)e.getPath().getLastPathComponent();
            //System.out.println("You selected " + node);
            if (!node.isFile()) {
                JFrame frame = new JFrame();
                JOptionPane.showConfirmDialog(frame, "Please select the valid file to Add Files", "Not Valid File",JOptionPane.PLAIN_MESSAGE );
                //if (result == JOptionPane.CANCEL_OPTION);
            }
            //else
        }
    });
尝试将节点值推入JTable

    //table just below Add Files button
    table_2 = new JTable();
    table_2.setBounds(324, 43, 713, 121);
    frmViperManufacturingRecord.getContentPane().add(table_2);
使用JButton

    // Add files button
    JButton btnAddFiles_1 = new JButton("Add Files");
    btnAddFiles_1.setMnemonic('A');
    btnAddFiles_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            Object rowData[][] = { { "01.", node, }};
            Object columnNames[] = { "Sl.no", "File name"};
            JTable table = new JTable(rowData, columnNames);
        }
    });
    btnAddFiles_1.setFont(new Font("Calibri", Font.BOLD, 12));
    btnAddFiles_1.setBounds(324, 9, 89, 23);
    frmViperManufacturingRecord.getContentPane().add(btnAddFiles_1);
在这里:

不要重新创建表格本身,因为已经创建并放置了
表格2
。改为更新其表模型。例如:

btnAddFiles_1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        Object rowData[][] = { { "01.", node, }};
        Object columnNames[] = { "Sl.no", "File name"};
        table_2.setModel(new DefaultTableModel(rowData, columnNames));
   }
});

旁注 关于这一行:

table_2.setBounds(324, 43, 713, 121);
Swing设计用于使用,不鼓励使用
setBounds(…)
setLocation(…)
setXxxSize(…)
等方法。看

此外(感谢@mKorbel评论):

表应该放在
JScrollPane
中,就像树一样:

JScrollPane scrollPane = new JScrollPane(table_2);
frmViperManufacturingRecord.getContentPane().add(scrollPane);

JTable也应该放在JScorllPane中-1(plus在comments中不可访问,这里不允许),我也注意到了这一点。但是你可以使用1+(尽管很奇怪)@mKorbellooks像as comment一样不能以char+开头或结尾,谢谢@dic19,它将与你的代码一起工作。它成功了,非常感谢您的时间和帮助对不起,我忘了澄清,您必须设置滚动窗格的边界,而不是表格的边界@Java.初学者
frmViperManufacturingRecord.getContentPane().add(table_2);
JScrollPane scrollPane = new JScrollPane(table_2);
frmViperManufacturingRecord.getContentPane().add(scrollPane);