Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java swing如何重写组件_Java_Swing_Jtable_Layout Manager_Swingutilities - Fatal编程技术网

Java swing如何重写组件

Java swing如何重写组件,java,swing,jtable,layout-manager,swingutilities,Java,Swing,Jtable,Layout Manager,Swingutilities,我没找到好标题我想很抱歉 正如你们将看到的,我已经打过电话了 ssframe.add(new JScrollPane(table),BorderLayout.CENTER); 3次,如果我点击typeButton,那么unitButton会在屏幕上显示2个表格。我想有一个表,每个按钮点击,我怎么能做到这一点 private class searchListener implements ActionListener { @Override pub

我没找到好标题我想很抱歉

正如你们将看到的,我已经打过电话了

ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
3次,如果我点击typeButton,那么unitButton会在屏幕上显示2个表格。我想有一个表,每个按钮点击,我怎么能做到这一点

    private class searchListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            JButton clickd = (JButton)e.getSource();
            if (clickd==typeButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(ssframe);
                            showTable1("type",typefield.getText());
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error Code = 0112");
                        }
                }
            else if (clickd==unitButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(frame);
                            showTable1("unit",unitfield.getText());
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error Code = 0112");
                        }
                }
            else if (clickd==priceButton)
                {
                    try
                        {
                            SwingUtilities.updateComponentTreeUI(frame);
                            showTable3("price",Integer.parseInt(pricefield.getText()));
                            ssframe.add(new JScrollPane(table),BorderLayout.CENTER);
                        }catch(Exception a)
                        {
                            a.printStackTrace();
                            JOptionPane.showMessageDialog(null,"Error C0de = 0112");
                        }
                }
        }
编辑:这可能有助于解决我的问题:

model.setRowCount(0);
model.fireTableDataChanged();

有很多方法可以做到这一点

  • 您可以维护对
    JScrollPane
    的引用,并使用
    setViewportView
    替换它的视图,提供要显示的表。
    JScrollPane
    将保留在框架上
  • (最好)更新表的表模型,这将替换内容并更新UI…这意味着
    JScrollPane
    JTable
    将作为单个引用进行维护,然后您只需更改模型即可
  • 另一种解决方案可能是使用
    卡片布局
    ,这将允许您根据需要切换视图
  • 一个非常非常糟糕的主意是在添加新组件之前删除以前添加的组件

  • 等等,你想干什么?请澄清您的目标与您看到的内容。为什么不简单地创建和显示一个JTable,然后如果需要交换或更改其TableModel,如果您希望它显示不同的数据(我猜您的目标是什么)?@我已经编辑。谢谢您的关注。try-catch块应该被分解(即使错误代码不同)你听说过但是表模型总是一样的,只有sql查询在改变吗?很抱歉,我是新手,对此不在行。所以不要做任何事情。只要更新表,如果你从来没有更改过,那么它就会自动更新表。@VivianMaya:正如我在评论中提到的。只需更改表模型持有的数据或交换表模型。看起来好像你的杀戮已经结束了。哦,天哪,我想我明白了,谢谢你的关注,我真的很棒。@VivianMaya:但是在你的下一个问题中,认真地多做一点努力来提供重要的细节。这个问题看起来有点匆忙。