2016-09-08 1 views
0

kann mir jemand sagen, wie man eine JTable Größe ändert, die in einem JScrollBar ist?Größe ändern JTable, die in JScrollBar ist

my JTable inside JScrollBar

auch, habe ich JPanel für registering und die JTable ist die Bestätigung, dass der Datensatz gespeichert wurde so nach dem registering die JTable erscheint. Wenn ich jedoch eine Größe auf JTable oder sogar die Größe JScrollPane festlege, wird nichts in meinem JTable erscheinen.

hier ist der Code für meine 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(); 
     } 

    } 
} 

und hier ist, wo ich die JTable rufen im bitte helfen und jede main JFrame

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); 
    } 
} 

aufgerufen werden Vorschläge vielen Dank :)

+0

Sie können die drap überprüfen und gui fallen die Tabelle, um die Größe, wenn ich verwendet auf Schwingen zu arbeiten, ich ziehen und die jtable fallen dann klicke mit der rechten Maustaste und wähle "Surround von scrollPane" –

+0

@ElSam danke für den Vorschlag !! :) aber ich versuche, hart zu codieren, wie ich bereits zur gleichen Zeit begann, ich glaube nicht, dass ich den Code in drag and drop verstehen werde. aber danke trotzdem :) – luh

+0

In Bezug auf den Code durch Drag & Drop für jTable generiert, ist es wirklich einfach. –

Antwort

1

Ein JScrollPane verwaltet ein Ansichtsfenster, optionale vertikale und horizontale Bildlaufleisten sowie optionale Ansichtsfenster für die Zeilen- und Spaltenüberschrift. Der scrollbare Client (wie eine Jtable) muss in die ViewPort-Ansicht eingefügt werden und Sie müssen nur die Größe des scrollPane ändern, nicht des Clients.

Überprüfung der doc: 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); 
    } 
} 

Ich hoffe, es hilft

Verwandte Themen