Class in TabbedPane einfügen

  • Themenstarter Themenstarter DonPJ
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

DonPJ

Gast
HI An alle Lieben Helfer 🙂

hab folgendes Problem und zwar hab ich versucht eine JTable Model was ein File aussliest in ein Tabbed Pane zu "importieren" mit folgender Methode....

TabellenImport soll im TabbedPane dargestellt werden....

Code:
 TabellenImport TI = new TabellenImport();
 tabbedPane.add("TabellenImport",TI);

nur leider will der des irgendwie nicht machen...

der code für TabellenImport:

Code:
public class TabellenImport 
{
	public TabellenImport()throws IOException{
		
		BufferedReader eingabe = new BufferedReader(new FileReader("Test.txt"));
	     int gelesen;
	     String eingabezeile;

	     eingabezeile=eingabe.readLine();

	     Vector input = new Vector();

	     while( eingabezeile != null ){
	       StringTokenizer  token= new StringTokenizer (eingabezeile);
	     
	       String[] felder =eingabezeile.split("\\,");
	       
	       StringBuffer text =new StringBuffer(10);
	       
	       input.add( felder );

	       
	       eingabezeile=eingabe.readLine();
	       
	       for ( int i = 0;i < felder.length;i++)
	        System.out.println ( felder[i] );
	     }

	     boolean ende =false;

	     Object rowData[][] =  (Object[][])input.toArray( new Object[ input.size() ][] );

	     String  columnNames[] = {
	           "Zeit", "Ort", "Tiefe", "Druck","#"
	         };
	     
	     
	     JTable table = new JTable( rowData, columnNames );
	     JScrollPane Test= new JScrollPane(table);
        	
	}
	
}


Vielen Danke im Vorraus
DonPJ
 
Code:
. . .
JTable table = new JTable( rowData, columnNames );
JScrollPane test = new JScrollPane(table);
JPanel panel = new JPanel(new BorderLayout());
panel.add("Center", test);
tabbedPane.add("TabellenImport", panel);
 
Code:
...
        TabellenImport TI = null;
        try {
            TI = new TabellenImport();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        tabbedPane.addTab("TabellenImport", TI.getTest());
...
class TabellenImport {
    public TabellenImport()throws IOException{
...
        JTable table = new JTable( rowData, columnNames );
        Test= new JScrollPane(table);
        
    }
    private JScrollPane Test;
    public JScrollPane getTest(){
        return Test;
    }
}
 
So...oder Du lässt TabellenImport von JPanel erben

Code:
public class TabellenImport extends JPanel

greetz
SLi
 
Code:
...
        try {
            tabbedPane.addTab("TabellenImport", new TabellenImport());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
...
class TabellenImport extends JScrollPane{
    public TabellenImport()throws IOException{
...
        JTable table = new JTable( rowData, columnNames );
        setViewportView(table);
    }
}
 
Danke werd ich gleich mal probieren....

Und hab noch gleich ne andere Frage.. geht es das ich

.getSelectedFile klassen übergreifend mach?

Hoffe ihr wisst was ich mein...

Danke
DonPJ
 
da ihr jetzt wahrscheinlich nicht wisst wie ich es mein Poste ich noch bissal code ;-)

Code:
		      else if(command.equals("Tabelle aus File")){
		    	  System.out.println("Menüeintrag "+command+" gewählt");
			       JFileChooser FT = new JFileChooser();
			       
			       FT.setFileFilter( new FileFilter()
			    		    {
			    		      public boolean accept( File f ) {
			    		        return f.isDirectory() ||
			    		               f.getName().toLowerCase().endsWith( ".txt" );//Filter für *.txt
			    		      }
			    		      public String getDescription() {
			    		        return "Texte";
			    		      }

			    		    } );
			       
			       
			       int returnVal = FT.showOpenDialog(parent);
			       if(returnVal == JFileChooser.APPROVE_OPTION)
			       {
			         File =  FT.getSelectedFile();}

		      }

und bei TabbellenImport:

Code:
public File File;
	
	public TabellenImport()throws IOException{//IO = InputOutput
		
		BufferedReader eingabe = new BufferedReader(new FileReader(File))

und der File der im Main Interface ausgewählt wird soll dann halt durch den Reader in der TabellenImport Class gelesen werden...


Vielen dank im Vorraus
DonPJ
 
also wenn ich jetzt auch File im TabellenImport hat und im MainInterface müsste es gehen?
 
Tipp zum Stil: bei den Namen von Variablen schreibt man den ersten Buchstaben immer klein: File-->file
Wie gesagt, du brauchst nur das entsprechende Objekt an TabellenImport zu übergeben:
Code:
public TabellenImport(File file)throws IOException{//IO = InputOutput 
     this.file = file;
...
 
hmm hab des irgendwie nicht hinbekommen das TabellenImport das File übernimmt, bzw da gings gar nicht mehr weil er halt immer die quelle gesucht hat und dann abgebrochen hat und gesagt "Unknown Source"

hab die Tabelle mal in meinen Listener geschrieben:

Code:
		      else if(command.equals("Tabelle aus File")){
		    	  System.out.println("Menüeintrag "+command+" gewählt");
			       JFileChooser FT = new JFileChooser();
			       
			       FT.setFileFilter( new FileFilter()
			    		    {
			    		      public boolean accept( File f ) {
			    		        return f.isDirectory() ||
			    		               f.getName().toLowerCase().endsWith( ".txt" );//Filter für *.txt
			    		      }
			    		      public String getDescription() {
			    		        return "Texte";
			    		      }

			    		    } );
			       
			       
			       int returnVal = FT.showOpenDialog(parent);
			       if(returnVal == JFileChooser.APPROVE_OPTION)
			       {
			         file =  FT.getSelectedFile();}
			       try{
			       BufferedReader eingabe = new BufferedReader(new FileReader(file));//File wird eingelesen
				     int gelesen;
				     String eingabezeile;

				     eingabezeile=eingabe.readLine();//Jede Zeile lesen

				     Vector input = new Vector();//Zeile als "Vector" speichern

				     while( eingabezeile != null ){
				       StringTokenizer  token= new StringTokenizer (eingabezeile);//Strings jeder Zeile auswerten
				     
				       String[] felder =eingabezeile.split("\\,");//Angabe wo die Strings getrennt werden sollen
				       
				       StringBuffer text =new StringBuffer(10);
				       
				       input.add( felder );//Strings in Vector speichern

				       
				       eingabezeile=eingabe.readLine();
				       
				       for ( int i = 0;i < felder.length;i++)
				        System.out.println ( felder[i] );
				     }

				     boolean ende =false;//Ende des Einlesens

				     Object rowData[][] =  (Object[][])input.toArray( new Object[ input.size() ][] );

				     String  columnNames[] = {
				           "Spalte1", "Spalte2", "Spalte3", "Spalte4","Spalte5","Spalte6","Spalte7"
				         };//Spalten Namen
				     
				     
				        JTable table = new JTable( rowData, columnNames );
				        Pane = new JScrollPane(table);
				        repaint();
			       }catch (IOException ex) {
			            ex.printStackTrace();
			        }

Pane hab ich als public JScrollPane pane = new JScrollPane();
definiert und per


tabbedPane.add("Tabelle", Pane);

dem TabbedPane hinzugefügt....

aber er will die Tabell nach auswahl der datei nicht zeichnen woran kann das liegen??


Vielen Dank
DonPJ
 
Code:
...
public class TabellenTest extends JFrame {
    public TabellenTest() {
...
        parent = this;
        getFile();
        try {
            tabbedPane.addTab("TabellenImport", new TabellenImport(file));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    private Component parent;
    private File file;
    private void getFile(){
        JFileChooser FT = new JFileChooser();
        int returnVal = FT.showOpenDialog(parent);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
            file =  FT.getSelectedFile();
        }
    }
...
}
class TabellenImport extends JScrollPane{
    private File file;
    public TabellenImport(File file)throws IOException{
        this.file = file;
        
        BufferedReader eingabe = new BufferedReader(new FileReader(file));
...        
        JTable table = new JTable( rowData, columnNames );
        setViewportView(table);
    }
}
 
Code:
   private void getNewTable(){
        getFile();
        TabellenImport ti = null;
        try {
            ti = new TabellenImport(file);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        int index = tabbedPane.getSelectedIndex();
        tabbedPane.setComponentAt(index, ti);
    }
 
Kann ich die Tabelle auch irgendwie "Refreshen" wenn ich während das programm läuft ein Anderes File reinlade??

habs über repaint versucht aber das ging nicht..

danke
DonPJ
 
Code:
       DefaultTableModel model = (DefaultTableModel)table.getModel();
        model.getDataVector().removeAllElements();
...
             //neue Zeile einfügen:
             Vector rowData = new Vector();
             for (int i = 0; i < model.getColumnCount(); i++) {
                 rowData.add(..);
             }
             model.addRow(rowData);
...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben