【问题标题】:resizing JTable that is inside JScrollBar调整 JScrollBar 内的 JTable 的大小
【发布时间】:2016-09-08 17:37:20
【问题描述】:

有人可以告诉我如何调整JScrollBar 中的JTable 的大小吗?

my JTable inside JScrollBar

另外,我有registeringJPanelJTable 是记录已保存的验证,所以在registering 之后会出现JTable。但是,如果我将大小设置为JTable 甚至JScrollPane 的大小,我的JTable 中将不会出现任何内容。

这是我的 JTable 的代码:

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public void setColumns(){
        ViewTablePanel.tblModel=new DefaultTableModel();
        ViewTablePanel.tblModel.setColumnIdentifiers(column);
    }

public class ViewTablePanel extends JPanel{
    static JTable tblVoters;
    static DefaultTableModel tblModel;

    ViewTablePanel(){       
        setBorder(BorderFactory.createTitledBorder("Voter's Information Table"));

        data=new Database();
        setColumns();
        data.retrieveRecords();

        ViewTablePanel.tblVoters=new JTable(ViewTablePanel.tblModel);


        add(new JScrollPane(ViewTablePanel.tblVoters));
    }
}

import javax.swing.*;
import javax.swing.table.*;
import java.io.*;
import java.util.*;
public class Database {
    static String [] column={"VOTERS NUMBER", 
        "LAST NAME", "FIRST NAME", 
        "MIDDLE NAME", "GENDER", 
        "STATUS", "WEIGHT", 
        "HEIGHT", "BIRTH MONTH", 
        "BIRTH DAY", "BIRTH YEAR", 
        "BIRTH CITY/MUN.", "BIRTH PROVINCE", 
        "PROVINCE", "CITY/MUN", "BARANGAY", 
        "HOUSE NO./ST.", 
        "# MONTHS IN CITY RESIDENCE", 
        "# YEARS IN CITY RESIDENCE", 
        "# YEARS IN PHIL. RESIDENCE", 
        "OCCUPATION", "TIN NUMBER", 
        "CITIZENSHIP", "CITIZEN SINCE", 
        "FIRST-MOTHER", "MIDDLE-MOTHER", 
        "LAST-MOTHER", "FIRST-FATHER", 
        "MIDDLE-FATHER", "LAST-FATHER"};
    static Vector rows;
    static File fileNew;
    static FileWriter fileWrite;
    static FileReader fileRead;
    static Scanner read;

    public Database() {
        fileNew=new File("Voters.txt");
        fileWrite=null;
        fileRead=null;
        read=null;
    }
    public void retrieveRecords(){
        String holdStr="";
        try {
            fileRead=new FileReader(fileNew);
            read=new Scanner(fileRead);

            while(read.hasNext()){
                holdStr+=read.nextLine()+"\n";
            }
            read.close();

            StringTokenizer strToken=new StringTokenizer(holdStr, "/");

            while(strToken.hasMoreElements()){
                rows=new Vector();
                for(int i=0; i<column.length; i++){
                    rows.add(strToken.nextElement());
                }
                ViewTablePanel.tblModel.addRow(rows);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

这是我在main JFrame 中调用JTable 的地方

import javax.swing.*;
import java.awt.*;

public class ViewPanel extends JPanel{

    ViewPanel(){
        setName("panelView");
        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(880,70));

        add(new JScrollPane(new ViewTablePanel()), BorderLayout.CENTER);
        add(new ViewButtonsPanel(), BorderLayout.SOUTH);
    }
}

请帮助和任何建议非常感谢你:)

【问题讨论】:

  • 你可以查看drap and drop gui来调整table的大小,我以前在swing上工作时,我拖放jtable,然后单击鼠标右键,然后选择surround by scrollPane跨度>
  • @ElSam 感谢您的建议! :) 但是我正在尝试进行硬编码,因为我已经同时开始了我认为我不会理解拖放中的代码。不过还是谢谢你:)
  • 关于jTable拖拽生成的代码,真的很简单。
  • 试着在你的桌子上打电话给setAutoResizeMode(JTable.AUTO_RESIZE_OFF)。文档:docs.oracle.com/javase/8/docs/api/javax/swing/…

标签: java file oop user-interface jtable


【解决方案1】:

JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。可滚动客户端(如 Jtable)必须放在 ViewPort 视图中,您只需要调整 scrollPane 的大小而不是客户端。

查看文档:JScrollPane doc

public class ViewTablePanel extends JPanel{
  static JTable tblVoters;
  static DefaultTableModel tblModel;

  ViewTablePanel(){       
    setBorder(BorderFactory.createTitledBorder("Voter's Information Table"));

    data=new Database();
    setColumns();
    data.retrieveRecords();

    ViewTablePanel.tblVoters=new JTable(ViewTablePanel.tblModel);

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(x,y,width,height);
    add(scrollPane);
    scrollPane.setViewportView(ViewTablePanel.tblVoters);
  }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    相关资源
    最近更新 更多