java - 在 JFrame 中将 JBusyComponent 与 JTable 一起使用

标签 java swing noclassdeffounderror jcomponent busyindicator

我正在关注

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/divxdede/text/TimeFormat
at org.divxdede.swing.busy.ui.BasicBusyLayerUI.<init>(BasicBusyLayerUI.java:102)
at org.divxdede.swing.busy.ui.BasicBusyLayerUI.<init>(BasicBusyLayerUI.java:138)
at org.divxdede.swing.busy.JBusyComponent.<init>(JBusyComponent.java:105)
at jewelleryerpapplication.GUI.Gold.IssueToRep1.<init>(IssueToRep1.java:136)
at jewelleryerpapplication.GUI.Gold.IssueToRep1.Instance(IssueToRep1.java:164)

我在我的项目中添加了以下库

  • jbusycomponent-1.2.2.jar
  • SwingX 1.6
  • JXLayer 3.0.4
  • Jarvis-Commons 0.1

当我将 JXBusyLayer 组件添加到我的 JFrame 时(同时用 JXBusyLayer 组件包装现有的 JTable 组件)使用下面的代码

     JBusyComponent<JTable> busytblDetailInfo = new JBusyComponent<JTable>(tblDetailInfo);
     myJFrame.add(busytblDetailInfo);

使用 Link !

 Edit

添加库Commons-0.2,异常消失。

Error 2 !

现在在 JBusyControl 包装的控件(JTable)上看不到数据。

Edit 2

添加了下面的代码(通过@MadProgrammer 的评论)但是问题仍然没有数据可以查看。

        jFrame.remove(tblDetailInfo);
        DefaultTableModel dtm = new DefaultTableModel(data, header);
        tblDetailInfo.setModel(dtm);
        JBusyComponent<JTable> busytblDetailInfo = new JBusyComponent<JTable>(tblDetailInfo_OrderInfo);
        jFrame.add(busytblDetailInfo);

最佳答案

我发现它不喜欢被包裹在 JScrollPane 中,这在我看来很奇怪 :P

(我撒谎,BusyComponent“喜欢”被添加到 JScrollPane;但您可能不想这样做)

enter image description here

public class TestBusy {

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

    public TestBusy() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new ContentPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class ContentPane extends JPanel {

        private JTable table;

        public ContentPane() {
            setLayout(new BorderLayout());
            table = new JTable();
            table.setFillsViewportHeight(true);

            DefaultTableModel model = new DefaultTableModel();
            model.addColumn("One");
            model.addColumn("Two");
            model.addColumn("Three");
            model.addColumn("Four");
            model.addColumn("Five");
            model.addColumn("Six");
            model.addColumn("Seven");
            table.setModel(model);
            JScrollPane scrollPane = new JScrollPane(table);

            JBusyComponent<JScrollPane> busyComponent = new JBusyComponent<JScrollPane>(scrollPane);
            add(busyComponent);

            busyComponent.getBusyModel().setMinimum(0);
            busyComponent.getBusyModel().setMaximum(10000);

            busyComponent.setBusy(true);
            BusySwingWorker<Object, Object[]> worker = new BusySwingWorker<Object, Object[]>(busyComponent.getBusyModel()) {

                @Override
                protected void process(List<Object[]> chunks) {
                    DefaultTableModel model = (DefaultTableModel) table.getModel();
                    for (Object[] chunk : chunks) {
                        model.addRow(chunk);
                    }
                }

                @Override
                protected Object doInBackground() throws Exception {
                    for (int index = 0; index < 1000; index++) {
                        setProgress(Math.round((index / 1000f) * 100f));
                        publish(new Object[]{index, "B", "C", "D", "E", "F", "G"});
                        Thread.sleep(5);
                    }
                    return null;
                }
            };
            worker.execute();
        }
    }
}

关于java - 在 JFrame 中将 JBusyComponent 与 JTable 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638823/

相关文章:

java - 如何从 BufferedImage 中获取 InputStream?

java - 如何使用带有回调的 send() 方法返回元数据?

java - 在圆中定位组件

android - NoClassDefFoundError for Guava's ImmutableMap with Dagger 2 for Android

java - 将一个对象添加到第一个类属性之一包含的另一个对象中,Java

Java Swing : How can I change the size of one row in a Grid layout and allow it to resize dynamically only horizontally and not vertically?

java - 为什么粗体 + 斜体不起作用?

java - NullPointerException,杀死了我的程序

android - 应用程序在模拟器上运行良好,但在设备上给出 NoClassDefFoundError

excel - 使用 Apache POI 打开 .xlsx 文件会出现 NoClassDefFoundError InvalidFormatException