首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java小程序表在运行时不显示

Java小程序表在运行时不显示
EN

Stack Overflow用户
提问于 2012-10-16 02:28:29
回答 1查看 348关注 0票数 0

我想在用户提供输入后显示一个表。我不明白为什么桌子不能显示出来。

我按照here (Stack Overflow)here (Rose India)的描述创建了我的表,以便创建一个可以添加到其中的表。

但是我的代码不会将表添加到applet中,特别是在这里:

代码语言:javascript
复制
aTable = new MDTable(mdList);
add( aTable );

代码的其余部分,完整粘贴here (Pastebin)

代码语言:javascript
复制
public class FMCSAApplet extends Applet implements ActionListener {

String zipcode;

Label lab1;
TextField t1;
Button submitButton;
MDTable aTable;

public void init()
{
    setLayout(new FlowLayout()); 
    submitButton = new Button("Submit"); 
    lab1 = new Label("Enter a zipcode:");
    t1 = new TextField(15);

    add(lab1);
    add(t1);
    add(submitButton);
    submitButton.addActionListener(this); 
}

public void paint(Graphics g)
{
    g.drawString("Zip code: "+zipcode,30,100);
    if(zipcode!=null) {
        g.drawString("dotNum\t inputZip\t name\t\t city\t state\t mileage\t unsafe\t fatigued\t fitness\t substance\t maintenance\t inspections",30,120);
        try {
            ..Code Stripped..
                            // get info from database, add to ArayList<MData> mdList
                                    ..Code Stripped..
                                    mdList.add(motorcoach);
                }
            } // end while
            rs.close();

            aTable = new MDTable(mdList);
            add( aTable );

        }catch (Exception f) {
            System.out.println(f);
        }
    }
}

public void actionPerformed(ActionEvent evt) 
{
    // Here we will ask what component called this method
     if (evt.getSource() == submitButton) {
         zipcode = t1.getText();
         repaint();
     }
}

public boolean action(Event e,Object o)
{
    zipcode = t1.getText();
    repaint();
    return true;
}

} //end FMCSAApplet Class

class MDTable extends JPanel {
    public MDTable(ArrayList<MData> md) {
        Object[][] cellData = {
            {1,2,"3","4","5",6,7,8,9,10,11,12}     
        };

        String[] columnNames = {"dotNum","inputZip", "name","city","state","mileage","unsafe","fatigued","fitness","substance","maintenance","inspections"};
        add(  new JTable(cellData, columnNames) ) ;
        DefaultTableModel model = new DefaultTableModel(cellData,columnNames);
        JTable table = new JTable(model);
        for (MData md1 : md) {
            model.insertRow(table.getRowCount(),new Object[]{md1.getDotNum(), md1.getInputZip(), md1.getName(), md1.getCity(), md1.getState(), md1.getMileage(), md1.getUnsafe(), md1.getFatigued(), md1.getFitness(), md1.getSubstance(), md1.getMaintenance(), md1.getInspections()});
        }
    } //end MDTable Constructor
} //end MDTable Class

class MData {
        ..Code Stripped..
        public MData(int d, int i, String n, String c, String s, int m, int u, int f, int fi, int su, int ma, int in)
        ..Code Stripped..
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 02:38:02

在添加MDTable组件之后,您将需要验证容器:

代码语言:javascript
复制
add( aTable );
validate();
...

此外,在paint方法中进行数据库调用也不是一个好主意。例如,当小程序重新获得焦点或调整大小时,paint将被多次调用。一种建议是将数据库调用提取到一个单独的方法中,并添加一个“重新加载”按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12901762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档