哎只有20分,不好意思,学习第一!
JTABLE怎么根据查询数据结果动态更新?
开始显示JTABLE是空的,只有表头!
然后查询数据库几个表时,查完了一个表就把结果添加到JTable中去,继续查寻时,一有结果又把结果添加到JTable中去 ,实现JTable的动态更新?还有一个问题就是JPanel里的组件,如JTextField怎么根据窗口的放大缩小,自动适应放大缩小??
先谢谢各位CSDN的大虾!!

解决方案 »

  1.   

    可以直接把数据更新到JTable的Model中就可以了JTextField控件添加到JPanel时最好使用可自适应大小变化的布局管理器
      

  2.   

    同意楼上的.
    另开一个线程对数据库进行读取,如果有新的数据,将新的数据加到Model里去,再刷新一下.
      

  3.   

    public class SearchFrame extends JFrame {
      BorderLayout borderLayout1 = new BorderLayout();
      JComboBox searchBox;
      Dimension scrSize;
      
       public static final ImageIcon ICON_ROOT=new ImageIcon("images\\plane.gif");
    public static final ImageIcon ICON_STAND=new ImageIcon("images\\men.gif");
    public static final ImageIcon ICON_AO=new ImageIcon("images\\ao.gif");
    public static final ImageIcon ICON_LAO=new ImageIcon("images\\lao.gif");
    public static final ImageIcon ICON_PART=new ImageIcon("images\\part.gif");

    public static ImageIcon[] groupIcon;

    JLabel conditionLabel;
    JLabel numberLabel;
    JLabel aoNumLabel;
    JLabel pAoNumLabel;
    JLabel partLabel;
    JLabel standLabel;
    JLabel mainMakeLabel;
    JLabel subMakeLabel;
    JLabel useDeptLabel;
    JLabel typeLabel;
    JLabel startLabel;
    JLabel endLabel;
    JLabel versionLabel;
    JLabel quantityLabel;
    JLabel sideNumLabel;
    JLabel nameCNLabel;
    JLabel nameENLabel;

    JTextField nameCNText;
    JTextField nameENText;
    JTextField numberText;
    JTextField aoNumberText;
    JTextField pAoNumberText;
    JTextField partText;
    JTextField standText;
    JTextField mainMakeText;
    JTextField subMakeText;
    JTextField useDeptText;
    JTextField typeText;
    JTextField startNumText;
    JTextField endNumText;
    JTextField versionText;
    JTextField quantityText;
    JTextField sideNumText;

    JPanel centerPanel;
    JCheckBox numberCheck;
    JCheckBox nameCNCheck;
    JCheckBox nameENCheck;
    JCheckBox startNumCheck; 
    JCheckBox endNumCheck;
        
        JButton searchButton;
        JButton clearButton;
        JTable  resultTable;
            
    public SearchFrame() {
        try {
          init();
        }
        catch(Exception ex) {
          ex.printStackTrace();
        }
      }
      
      public void init()
      {
         Toolkit toolkit=Toolkit.getDefaultToolkit();
    scrSize=toolkit.getScreenSize();

    Container contentPane = this.getContentPane();
    contentPane.setLayout(new BorderLayout());
    this.setTitle("查询");

    //int frameWidth=700;
    //int frameHeight=300;
    //this.setSize(frameWidth,frameHeight);
    ///this.setLocation(scrSize.width/2-frameWidth/2,scrSize.height/2-frameHeight/2);
    this.setResizable(true);
    this.setExtendedState(JFrame.MAXIMIZED_BOTH);

    nameCNLabel=new JLabel("中文名字(C):");
    nameENLabel=new JLabel("英文名字(E):");
    conditionLabel=new JLabel("搜索条件:");
    numberLabel=new JLabel("产品号码(P):");
    aoNumLabel=new JLabel("AO号:");
    pAoNumLabel=new JLabel("长驻AO号:");
    partLabel=new JLabel("零件号:");
    standLabel=new JLabel("站位:");
    mainMakeLabel=new JLabel("主要制造部门:");
    subMakeLabel=new JLabel("次要制造部门:");
    useDeptLabel=new JLabel("使用部门:");
    typeLabel=new JLabel("类型:");
    startLabel=new JLabel("起始架次(S):");
    endLabel=new JLabel("最终架次(E):");
    versionLabel=new JLabel("版次:");
    quantityLabel=new JLabel("数量:");
    sideNumLabel=new JLabel("侧位:");

    nameCNText=new JTextField(50);
    nameENText=new JTextField(50);
    numberText=new JTextField(50);
    aoNumberText=new JTextField(50);
    pAoNumberText=new JTextField(50);
    startNumText=new JTextField(50);
    endNumText=new JTextField(50);
    partText=new JTextField(20);
    standText=new JTextField(20);
    mainMakeText=new JTextField(20);
    subMakeText=new JTextField(20);
    useDeptText=new JTextField(20);
    typeText=new JTextField(20);
    versionText=new JTextField(20);
    quantityText=new JTextField(20);
    sideNumText=new JTextField(20);

    numberCheck=new JCheckBox("与");
    nameCNCheck=new JCheckBox("与");
    nameENCheck=new JCheckBox("与");
    startNumCheck=new JCheckBox("与");
    endNumCheck=new JCheckBox("与");

    searchButton=new JButton("查找");
    clearButton=new JButton("清除");

    Vector v=new Vector();
    v.addElement("平尾");
       //v.addElement("站位");
    v.addElement("AO");
    v.addElement("长驻AO");
    v.addElement("零件");
    int size=v.size();

    groupIcon=new ImageIcon[size];
    groupIcon[0]=SearchFrame.ICON_ROOT;
    //groupIcon[1]=SearchFrame.ICON_STAND;
    groupIcon[1]=SearchFrame.ICON_AO;
    groupIcon[2]=SearchFrame.ICON_LAO;
    groupIcon[3]=SearchFrame.ICON_PART;
    MyIconData[] iconData=new MyIconData[size];
    for(int i=0;i<size;i++)
    {
    iconData[i]=new MyIconData((v.elementAt(i)).toString(),groupIcon[i]);
    }

    searchBox=new JComboBox(iconData); 
    searchBox.addItemListener(new SearchFrame_Select_SelectChangeAdapter(this));
    searchBox.setRenderer(new IconCellRender());
    JLabel searchLabel=new JLabel("搜索:");
    JPanel leftPanel=new JPanel();
    leftPanel.add(searchLabel);
    leftPanel.add(searchBox);
    JPanel topPanel=new JPanel(new BorderLayout());
    topPanel.add(leftPanel,BorderLayout.WEST);
    contentPane.add(topPanel,BorderLayout.NORTH);

    JPanel contentPanel=new JPanel(new BorderLayout());
    JPanel buttonPanel=new JPanel(new BorderLayout());
    //contentPanel.setBorder();
    contentPanel.setLayout(new GridBagLayout());
    contentPanel.setBackground(UIManager.getColor("control"));
            GridBagConstraints c=new GridBagConstraints();
            
            c.gridx=0;
    c.gridy = GridBagConstraints.RELATIVE;
    c.gridwidth=1;
    c.gridheight=1;
    c.insets=new Insets(2,2,2,2);
    c.anchor = GridBagConstraints.EAST;
    numberLabel.setDisplayedMnemonic('P');
    nameCNLabel.setDisplayedMnemonic('C');
    nameENLabel.setDisplayedMnemonic('E');
    startLabel.setDisplayedMnemonic('S');
    endLabel.setDisplayedMnemonic('E');

    contentPanel.add(conditionLabel,c);
    contentPanel.add(numberLabel,c);
    contentPanel.add(nameCNLabel,c);
    contentPanel.add(nameENLabel,c);
    contentPanel.add(startLabel,c);
    contentPanel.add(endLabel,c);

    c.gridx=1;
    c.gridy=1;
    //c.weightx=10;
    c.fill = GridBagConstraints.HORIZONTAL;
         c.anchor = GridBagConstraints.EAST;
         contentPanel.add(numberText,c);
         numberText.setFocusAccelerator('P');
         c.gridx = 1;
         c.gridy = GridBagConstraints.RELATIVE;
         contentPanel.add(nameCNText,c);
         nameCNText.setFocusAccelerator('C');
         nameENText.setFocusAccelerator('E');
         startNumText.setFocusAccelerator('S');
         endNumText.setFocusAccelerator('E');
         contentPanel.add(nameENText,c);
         contentPanel.add(startNumText,c);
         contentPanel.add(endNumText,c);
         //contentPanel.add(searchButton,c);
        
         c.gridx=2;
         c.gridy=1;
         c.weightx = 10;
         c.anchor = GridBagConstraints.CENTER;
         contentPanel.add(numberCheck,c);
         c.gridy = GridBagConstraints.RELATIVE;
         contentPanel.add(nameCNCheck,c);
         contentPanel.add(nameENCheck,c);
         contentPanel.add(startNumCheck,c);
         contentPanel.add(endNumCheck,c);
         //contentPanel.add(clearButton,c);
         JPanel bottomPanel=new JPanel();
    bottomPanel.add(searchButton);
    bottomPanel.add(clearButton);
    buttonPanel.add(bottomPanel,BorderLayout.EAST);

         centerPanel=new JPanel(new BorderLayout());
    centerPanel.add(contentPanel,BorderLayout.NORTH);
    centerPanel.add(buttonPanel,BorderLayout.CENTER);
    contentPane.add(centerPanel,BorderLayout.WEST);
    this.setVisible(true);


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

  4.   

    看我这个代码,不要吓到,主要看几个JPANL的布局管理,我都是
    用borderlayout,但是窗口最大化时,centerPanel在左边显示,而没有跟着变大?
    自适应大小!!
    谢谢大家
    麻烦看下!!
      

  5.   

    我想,如果想突出问题还是把代码简化一下,再让大家看,也便于问题的快速定位和修改这个代码有点长,我没有看完,只是搜索了一下contentPane,发现centerPanel是添加在contentPane的WEST区中的,(WEST区是只有高度变化的,没有宽度变化),我想你是不是想使centerPanel根据窗体的大小变化,宽度和高度都变化?如果是这样,它就应该放在contentPane的CENTER区
      

  6.   

    Michael_lee(水晶先生) 说的是!!
    其实问题就是:
    JPanel cPanel=new JPanel(new BorderLayout());
    cPanel.setLayout(newGridBagLayout());
    然后GridBagLayout包含了很多JTextField呵JCheckBox!!!JPanel centerPanel=new JPanel(new BorderLayout());
    centerPanel.add(cPanel,BorderLayout.NORTH);Container contentPane = JFrame.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(centerPanel,BorderLayout.CENTER);要问的就是 cPanel里的JTextField为什么不根据窗体的大小变化,宽度发生变化
    谢谢大家!!刚才不好意思!
      

  7.   

    另外有没有
    始显示JTABLE是空的,只有表头!
    然后查询数据库几个表时,查完了一个表就把结果添加到JTable中去,继续查寻时,一有结果又把结果添加到JTable中去 ,实现JTable的动态更新的代码???
    谢谢!!