Java 在JFrame中使用JBusyComponent和JTable

Java 在JFrame中使用JBusyComponent和JTable,java,swing,noclassdeffounderror,jcomponent,busyindicator,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&g

我被开除了

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)
使用

添加了库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);
jFrame.remove(tblDetailInfo);
DefaultTableModel dtm=新的DefaultTableModel(数据,标题);
tblDetailInfo.setModel(dtm);
JBusyComponent busytblDetailInfo=新JBusyComponent(tblDetailInfo_OrderInfo);
jFrame.add(busytblDetailInfo);

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

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

公共类TestBusy{
公共静态void main(字符串[]args){
新TestBusy();
}
公共测试忙(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(newcontentpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类ContentPane扩展了JPanel{
专用JTable表;
公共内容窗格(){
setLayout(新的BorderLayout());
table=新的JTable();
表.setFillsViewPerthweight(真);
DefaultTableModel=新的DefaultTableModel();
模型。添加列(“一”);
模型。添加列(“两个”);
模型。添加列(“三”);
模型。添加列(“四”);
模型。添加列(“五”);
模型。添加列(“六”);
模型。添加列(“七”);
表2.setModel(model);
JScrollPane scrollPane=新的JScrollPane(表);
JBusyComponent busyComponent=新JBusyComponent(滚动窗格);
添加(busyComponent);
busyComponent.getBusyModel().setMinimum(0);
busyComponent.getBusyModel().setMaximum(10000);
busyComponent.setBusy(真);
BusySwingWorker=新的BusySwingWorker(busyComponent.getBusyModel()){
@凌驾
受保护的无效进程(列表块){
DefaultTableModel=(DefaultTableModel)table.getModel();
for(对象[]块:块){
model.addRow(chunk);
}
}
@凌驾
受保护对象doInBackground()引发异常{
对于(int-index=0;index<1000;index++){
setProgress(数学四舍五入((指数/1000f)*100f));
发布(新对象[]{索引,“B”、“C”、“D”、“E”、“F”、“G”});
睡眠(5);
}
返回null;
}
};
worker.execute();
}
}
}

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

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

公共类TestBusy{
公共静态void main(字符串[]args){
新TestBusy();
}
公共测试忙(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(newcontentpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类ContentPane扩展了JPanel{
专用JTable表;
公共内容窗格(){
setLayout(新的BorderLayout());
table=新的JTable();
表.setFillsViewPerthweight(真);
DefaultTableModel=新的DefaultTableModel();
模型。添加列(“一”);
模型。添加列(“两个”);
模型。添加列(“三”);
模型。添加列(“四”);
模型。添加列(“五”);
模型。添加列(“六”);
模型。添加列(“七”);
表2.setModel(model);
JScrollPane scrollPane=新的JScrollPane(表);
JBusyComponent busyComponent=新JBusyComponent(滚动窗格);
添加(busyComponent);
busyComponent.getBusyModel().setMinimum(0);
busyComponent.getBusyModel().setMaximum(10000);
busyComponent.setBusy(真);
BusySwingWorker=新的BusySwingWorker(busyComponent.getBusyModel()){
@凌驾
受保护的无效进程(列表块){
DefaultTableModel=(DefaultTableModel)table.getModel();
for(对象[]块:块){
model.addRow(chunk);
}
}
@凌驾
Edit 2
        jFrame.remove(tblDetailInfo);
        DefaultTableModel dtm = new DefaultTableModel(data, header);
        tblDetailInfo.setModel(dtm);
        JBusyComponent<JTable> busytblDetailInfo = new JBusyComponent<JTable>(tblDetailInfo_OrderInfo);
        jFrame.add(busytblDetailInfo);
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();
        }
    }
}