Scrollpane scrollt nicht, und Tabelle ist kopflos

RealHAZZARD

Erfahrenes Mitglied
Tach.

Ich verstehs nicht. Warum funktionobelt das da nicht:

Code:
  import java.awt.Color;
  import java.awt.Container;
  import java.awt.Dimension;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.Font;
  import java.awt.event.ActionListener;
  import java.text.SimpleDateFormat;
  import javax.swing.JButton;
  import javax.swing.JCheckBox;
  import javax.swing.JComboBox;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;
  import javax.swing.JTable;
  import javax.swing.JTextField;
  import javax.swing.JFormattedTextField;
  import javax.swing.border.*;
  
  public class TheLook 
  {
  	JFrame _fenster = new JFrame();
  	SimpleDateFormat format_datum = new SimpleDateFormat( "dd.MM.yyyy" );
  	JLabel _label_dateisuche = new JLabel("Dateiname:");
  	JLabel _label_begriffsuche = new JLabel("Dateiinhalt:");
  	JLabel _label_begriffverknuepfung = new JLabel("Verknüpfung:");
  	JLabel _label_suchpfad = new JLabel("Suchort:");
  	JLabel _label_typ = new JLabel("Dateityp:");
  	JLabel _label_dateigoesse = new JLabel("Dateigröße:");
  	JLabel _label_von_dateigroesse = new JLabel("von:");
  	JLabel _label_bis_dateigroesse = new JLabel("bis:");
  	JLabel _label_mb1 = new JLabel("MB");
  	JLabel _label_mb2 = new JLabel("MB");
  	JLabel _label_von_zeitraum = new JLabel("von:");
  	JLabel _label_bis_zeitraum = new JLabel("bis:");
  	JLabel _label_zeitraum = new JLabel("Änderungsdatum:");
  	JLabel _label_statuszeile = new JLabel();
  	JCheckBox _checkbox_grossklein = new JCheckBox("Groß / Kleinschreibung beachten");
  	JCheckBox _checkbox_unterordner = new JCheckBox("Unterordner durchsuchen");
  	JCheckBox _checkbox_versteckt = new JCheckBox("Versteckte Elemente suchen");
  	JCheckBox _checkbox_zip = new JCheckBox("ZIP - Dateien durchsuchen");
  	JTextField _textfeld_dateisuche = new JTextField();
  	JTextField _textfeld_begriffsuche = new JTextField();
  	JTextField _textfeld_suchpfad = new JTextField();
  	JTextField _textfeld_typ = new JTextField();
  	JTextField _textfeld_von_dateigroesse = new JTextField();
  	JTextField _textfeld_bis_dateigroesse = new JTextField();
  	JFormattedTextField _ftextfeld_von_datum = new JFormattedTextField(format_datum);
  	JFormattedTextField _ftextfeld_bis_datum = new JFormattedTextField(format_datum);
  	JComboBox _combobox_dateibegriff_beziehung = new JComboBox();
  	JComboBox _combobox_dateityp = new JComboBox();
  	JButton _button_find = new JButton("Find...");
  	JPanel _panel_search =new JPanel();
  	JPanel _panel_options = new JPanel();
  	String [] header={"Name","Vorname","Email"};
  	Object [][] data ={{"1","2","3"},
 						{"4","5","6"},
 		 			{"7","8","9"}};
  	JTable _tabelle_gefunden = new JTable(data,header);
  	JScrollPane _pane_tabelle = new JScrollPane();
  	Font _font_normale_schrift = new Font ("Impact",Font.PLAIN,12);
  	Font _font_kleine_schrift = new Font ("Impact",Font.PLAIN,10);
  	Color _farbe_weiss = new Color(255,255,255);
  	Color _farbe_schwarz = new Color(0,0,0);
  	
  	public TheLook()
  	{		
  		//Fenstereigenschaften
  		_fenster.setSize(600,500);
  		_fenster.setLocation(100,100);
  		_fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  		_fenster.setTitle("FileSpy");
  		_fenster.setFont(_font_normale_schrift);
  		
  		_panel_search.setLayout(null);
  		_panel_search.setBorder (new BevelBorder ( BevelBorder.RAISED ));
  		_panel_search.setName("Suche...");
  		_panel_search.setFont(_font_normale_schrift);
  		_panel_options.setLayout(null);
  		_panel_options.setBorder (new BevelBorder ( BevelBorder.RAISED ));
  		_panel_options.setName("Optionen");
  		_panel_options.setFont(_font_normale_schrift);
  		_pane_tabelle.setLayout(null);
  		_pane_tabelle.setBorder (new BevelBorder ( BevelBorder.RAISED ));
  		_pane_tabelle.setName("Tabelle");
  		
  		//Eigenschaften von allem was in _panel_search gepresst wird
  		_label_dateisuche.setSize(100,20);
  		_label_dateisuche.setLocation(5,10);
  		_textfeld_dateisuche.setSize(120,20);
  		_textfeld_dateisuche.setLocation(120,10);
  		_label_begriffverknuepfung.setSize(100,20);
  		_label_begriffverknuepfung.setLocation(5,30);
  		_combobox_dateibegriff_beziehung.setSize(60,20);
  		_combobox_dateibegriff_beziehung.setLocation(180,30);
  		_label_begriffsuche.setSize(100,20);
  		_label_begriffsuche.setLocation(5,50);
  		_textfeld_begriffsuche.setSize(120,20);
  		_textfeld_begriffsuche.setLocation(120,50);
  		_checkbox_grossklein.setSize(220,15);
  		_checkbox_grossklein.setLocation(5,75);
  		_checkbox_unterordner.setSize(220,15);
  		_checkbox_unterordner.setLocation(5,90);
  		_checkbox_versteckt.setSize(220,15);
  		_checkbox_versteckt.setLocation(5,105);
  		_checkbox_zip.setSize(220,15);
  		_checkbox_zip.setLocation(5,120);
  		
  		//Eigenschaften von allem was in _panel_options gepresst wird
  		_label_suchpfad.setSize(100,20);
  		_label_suchpfad.setLocation(5,10);
  		_textfeld_suchpfad.setSize(130,20);
  		_textfeld_suchpfad.setLocation(110,10);
  		_label_typ.setSize(100,20);
  		_label_typ.setLocation(5,30);
  		_combobox_dateityp.setSize(60,20);
  		_combobox_dateityp.setLocation(130,30);
  		_textfeld_typ.setSize(50,20);
  		_textfeld_typ.setLocation(190,30);
  		_label_dateigoesse.setSize(100,20);
  		_label_dateigoesse.setLocation(5,50);
  		_label_von_dateigroesse.setSize(35,20);
  		_label_von_dateigroesse.setLocation(130,50);
  		_textfeld_von_dateigroesse.setSize(50,20);
  		_textfeld_von_dateigroesse.setLocation(170,50);
  		_label_mb1.setSize(20,20);
  		_label_mb1.setLocation(222,50);
  		_label_bis_dateigroesse.setSize(35,20);
  		_label_bis_dateigroesse.setLocation(130,70);
  		_textfeld_bis_dateigroesse.setSize(50,20);
  		_textfeld_bis_dateigroesse.setLocation(170,70);
  		_label_mb2.setSize(20,20);
  		_label_mb2.setLocation(222,70);
  		_label_zeitraum.setSize(110,20);
  		_label_zeitraum.setLocation(5,90);
  		_label_von_zeitraum.setSize(30,20);
  		_label_von_zeitraum.setLocation(130,90);
  		_ftextfeld_von_datum.setSize(70,20);
  		_ftextfeld_von_datum.setLocation(170,90);
  		_label_bis_zeitraum.setSize(30,20);
  		_label_bis_zeitraum.setLocation(130,110);
  		_ftextfeld_bis_datum.setSize(70,20);
  		_ftextfeld_bis_datum.setLocation(170,110);
  		
  		//Eigenschaften von allem was in _pane_tabelle gepresst wird
  		_tabelle_gefunden.setSize(610,350);
  		_tabelle_gefunden.setLocation(0,0);	
  		
  
  		//freie Komponenten
  		_button_find.setSize(70,20);
  		_button_find.setLocation(440,160);
  		_label_statuszeile.setSize(425,20);
  		_label_statuszeile.setLocation(5,160);
  		_label_statuszeile.setBorder(new BevelBorder ( BevelBorder.LOWERED ));
  		
  		_panel_search.setSize(250,150);
  		_panel_search.setLocation(5,5);
  		_panel_options.setSize(250,150);
  		_panel_options.setLocation(260,5);
  		_pane_tabelle.setSize(510,250);
  		_pane_tabelle.setLocation(5,185);
  		_pane_tabelle.setPreferredSize(new Dimension(510, 250));
 		_pane_tabelle.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
   _pane_tabelle.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  		
  		//andere Eigenschaften
  		_combobox_dateibegriff_beziehung.addItem("ODER");
  		_combobox_dateibegriff_beziehung.addItem("UND");
  		_checkbox_versteckt.setSelected(true);
  		_checkbox_unterordner.setSelected(true);
  		 
  		//Komponenten in den Container
  		_panel_search.add(_label_dateisuche);
  		_panel_search.add(_label_begriffsuche);
  		_panel_search.add(_textfeld_begriffsuche);
  		_panel_search.add(_textfeld_dateisuche);
  		_panel_search.add(_combobox_dateibegriff_beziehung);
  		_panel_search.add(_label_begriffverknuepfung);
  		_panel_search.add(_checkbox_grossklein);
  		_panel_search.add(_checkbox_unterordner);
  		_panel_search.add(_checkbox_versteckt);
  		_panel_search.add(_checkbox_zip);
  		_panel_options.add(_label_suchpfad);
  		_panel_options.add(_textfeld_suchpfad);
  		_panel_options.add(_label_typ);
  		_panel_options.add(_textfeld_typ);
  		_panel_options.add(_combobox_dateityp);
  		_panel_options.add(_label_dateigoesse);
  		_panel_options.add(_textfeld_von_dateigroesse);
  		_panel_options.add(_textfeld_bis_dateigroesse);
  		_panel_options.add(_label_von_dateigroesse);
  		_panel_options.add(_label_bis_dateigroesse);
  		_panel_options.add(_label_mb1);
  		_panel_options.add(_label_mb2);
  		_panel_options.add(_ftextfeld_von_datum);
  		_panel_options.add(_label_von_zeitraum);
  		_panel_options.add(_label_bis_zeitraum);
  		_panel_options.add(_ftextfeld_bis_datum);
  		_panel_options.add(_label_zeitraum);
  		_pane_tabelle.add(_tabelle_gefunden);
  		
  		_fenster.getContentPane().add(_panel_search);
  		_fenster.getContentPane().add(_panel_options);
  		_fenster.getContentPane().add(_button_find);
  		_fenster.getContentPane().add(_pane_tabelle);
  		_fenster.getContentPane().add(_label_statuszeile);
  		_fenster.setVisible(true);
  	}
  }
Is ein Bißchen viel, aber ich wollte es auch nicht aus dem Zusammenhang nehmen.

Meine Probs:
Die Tablle tut so als wüsste sie von nix und sellt weder den Kopf noch die Datei ein.
Und das ScrollPane will nicht scollen.
In einem weit kleinerem Beispiel hab ich die Tabelle aber schon zu daten und
Kopf darstellen gebracht. Und dabei hab ich festgestellt, das Layoutsachen das
kaputt machen können. Aber ich weiß nicht was ich bei dem großen Quelltext so viel anders mache?
Das Beispiel das geht:
Code:
  import javax.swing.JFrame;
  import javax.swing.JScrollPane;
  import javax.swing.JTable;;
  
  public class test {
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) 
  	{
  
  		String [] header={"Name","Vorname","Email"};
  	Object [][] data ={{"1","2","3"},
 						{"4","5","6"},
 		 			{"7","8","9"}};
  		JTable liste = new JTable(data,header );
  		JFrame frame = new JFrame();
  		
  		frame.getContentPane().add( new JScrollPane(liste) );
  		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  		
  		frame.setSize(50,50);
  		frame.setVisible( true );
  	}
  
  }
Ich hoffe ihr könnt mir helfen.
 

Romsl

Erfahrenes Mitglied
Hi,

jetzt sollte es funktionieren.

Zum einen hast du der ScrollPane das NullLayout gesetzt und zum anderen musst du bei der ScrollPane nicht Komponenten adden die du im Scrollbereich anzeigen möchtest, sondern als viewportView setzen.

Code:
package test;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JFormattedTextField;
import javax.swing.border.*;

public class TableTest {
    JFrame _fenster = new JFrame();
    SimpleDateFormat format_datum = new SimpleDateFormat("dd.MM.yyyy");
    JLabel _label_dateisuche = new JLabel("Dateiname:");
    JLabel _label_begriffsuche = new JLabel("Dateiinhalt:");
    JLabel _label_begriffverknuepfung = new JLabel("Verknüpfung:");
    JLabel _label_suchpfad = new JLabel("Suchort:");
    JLabel _label_typ = new JLabel("Dateityp:");
    JLabel _label_dateigoesse = new JLabel("Dateigröße:");
    JLabel _label_von_dateigroesse = new JLabel("von:");
    JLabel _label_bis_dateigroesse = new JLabel("bis:");
    JLabel _label_mb1 = new JLabel("MB");
    JLabel _label_mb2 = new JLabel("MB");
    JLabel _label_von_zeitraum = new JLabel("von:");
    JLabel _label_bis_zeitraum = new JLabel("bis:");
    JLabel _label_zeitraum = new JLabel("Änderungsdatum:");
    JLabel _label_statuszeile = new JLabel();
    JCheckBox _checkbox_grossklein = new JCheckBox("Groß / Kleinschreibung beachten");
    JCheckBox _checkbox_unterordner = new JCheckBox("Unterordner durchsuchen");
    JCheckBox _checkbox_versteckt = new JCheckBox("Versteckte Elemente suchen");
    JCheckBox _checkbox_zip = new JCheckBox("ZIP - Dateien durchsuchen");
    JTextField _textfeld_dateisuche = new JTextField();
    JTextField _textfeld_begriffsuche = new JTextField();
    JTextField _textfeld_suchpfad = new JTextField();
    JTextField _textfeld_typ = new JTextField();
    JTextField _textfeld_von_dateigroesse = new JTextField();
    JTextField _textfeld_bis_dateigroesse = new JTextField();
    JFormattedTextField _ftextfeld_von_datum = new JFormattedTextField(format_datum);
    JFormattedTextField _ftextfeld_bis_datum = new JFormattedTextField(format_datum);
    JComboBox _combobox_dateibegriff_beziehung = new JComboBox();
    JComboBox _combobox_dateityp = new JComboBox();
    JButton _button_find = new JButton("Find...");
    JPanel _panel_search = new JPanel();
    JPanel _panel_options = new JPanel();
    String [] header = {"Name", "Vorname", "Email"};
    Object [][] data = {{"1", "2", "3"},
                        {"4", "5", "6"},
                        {"7", "8", "9"}};
    JTable _tabelle_gefunden = new JTable(data, header);
    JScrollPane _pane_tabelle = new JScrollPane();
    Font _font_normale_schrift = new Font("Impact", Font.PLAIN, 12);
    Font _font_kleine_schrift = new Font("Impact", Font.PLAIN, 10);
    Color _farbe_weiss = new Color(255, 255, 255);
    Color _farbe_schwarz = new Color(0, 0, 0);

    public TableTest() {
        //Fenstereigenschaften
        _fenster.setSize(600, 500);
        _fenster.setLocation(100, 100);
        _fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        _fenster.setTitle("FileSpy");
        _fenster.setFont(_font_normale_schrift);

        _panel_search.setLayout(null);
        _panel_search.setBorder(new BevelBorder(BevelBorder.RAISED));
        _panel_search.setName("Suche...");
        _panel_search.setFont(_font_normale_schrift);
        _panel_options.setLayout(null);
        _panel_options.setBorder(new BevelBorder(BevelBorder.RAISED));
        _panel_options.setName("Optionen");
        _panel_options.setFont(_font_normale_schrift);
        
        // TODO: hier geaendert
        //_pane_tabelle.setLayout(null);
        _pane_tabelle.setBorder(new BevelBorder(BevelBorder.RAISED));
        _pane_tabelle.setName("Tabelle");

        //Eigenschaften von allem was in _panel_search gepresst wird
        _label_dateisuche.setSize(100, 20);
        _label_dateisuche.setLocation(5, 10);
        _textfeld_dateisuche.setSize(120, 20);
        _textfeld_dateisuche.setLocation(120, 10);
        _label_begriffverknuepfung.setSize(100, 20);
        _label_begriffverknuepfung.setLocation(5, 30);
        _combobox_dateibegriff_beziehung.setSize(60, 20);
        _combobox_dateibegriff_beziehung.setLocation(180, 30);
        _label_begriffsuche.setSize(100, 20);
        _label_begriffsuche.setLocation(5, 50);
        _textfeld_begriffsuche.setSize(120, 20);
        _textfeld_begriffsuche.setLocation(120, 50);
        _checkbox_grossklein.setSize(220, 15);
        _checkbox_grossklein.setLocation(5, 75);
        _checkbox_unterordner.setSize(220, 15);
        _checkbox_unterordner.setLocation(5, 90);
        _checkbox_versteckt.setSize(220, 15);
        _checkbox_versteckt.setLocation(5, 105);
        _checkbox_zip.setSize(220, 15);
        _checkbox_zip.setLocation(5, 120);

        //Eigenschaften von allem was in _panel_options gepresst wird
        _label_suchpfad.setSize(100, 20);
        _label_suchpfad.setLocation(5, 10);
        _textfeld_suchpfad.setSize(130, 20);
        _textfeld_suchpfad.setLocation(110, 10);
        _label_typ.setSize(100, 20);
        _label_typ.setLocation(5, 30);
        _combobox_dateityp.setSize(60, 20);
        _combobox_dateityp.setLocation(130, 30);
        _textfeld_typ.setSize(50, 20);
        _textfeld_typ.setLocation(190, 30);
        _label_dateigoesse.setSize(100, 20);
        _label_dateigoesse.setLocation(5, 50);
        _label_von_dateigroesse.setSize(35, 20);
        _label_von_dateigroesse.setLocation(130, 50);
        _textfeld_von_dateigroesse.setSize(50, 20);
        _textfeld_von_dateigroesse.setLocation(170, 50);
        _label_mb1.setSize(20, 20);
        _label_mb1.setLocation(222, 50);
        _label_bis_dateigroesse.setSize(35, 20);
        _label_bis_dateigroesse.setLocation(130, 70);
        _textfeld_bis_dateigroesse.setSize(50, 20);
        _textfeld_bis_dateigroesse.setLocation(170, 70);
        _label_mb2.setSize(20, 20);
        _label_mb2.setLocation(222, 70);
        _label_zeitraum.setSize(110, 20);
        _label_zeitraum.setLocation(5, 90);
        _label_von_zeitraum.setSize(30, 20);
        _label_von_zeitraum.setLocation(130, 90);
        _ftextfeld_von_datum.setSize(70, 20);
        _ftextfeld_von_datum.setLocation(170, 90);
        _label_bis_zeitraum.setSize(30, 20);
        _label_bis_zeitraum.setLocation(130, 110);
        _ftextfeld_bis_datum.setSize(70, 20);
        _ftextfeld_bis_datum.setLocation(170, 110);

        //Eigenschaften von allem was in _pane_tabelle gepresst wird
        _tabelle_gefunden.setSize(610, 350);
        _tabelle_gefunden.setLocation(0, 0);

        //freie Komponenten
        _button_find.setSize(70, 20);
        _button_find.setLocation(440, 160);
        _label_statuszeile.setSize(425, 20);
        _label_statuszeile.setLocation(5, 160);
        _label_statuszeile.setBorder(new BevelBorder(BevelBorder.LOWERED));

        _panel_search.setSize(250, 150);
        _panel_search.setLocation(5, 5);
        _panel_options.setSize(250, 150);
        _panel_options.setLocation(260, 5);
        _pane_tabelle.setSize(510, 250);
        _pane_tabelle.setLocation(5, 185);
        _pane_tabelle.setPreferredSize(new Dimension(510, 250));
        _pane_tabelle.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        _pane_tabelle.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        //andere Eigenschaften
        _combobox_dateibegriff_beziehung.addItem("ODER");
        _combobox_dateibegriff_beziehung.addItem("UND");
        _checkbox_versteckt.setSelected(true);
        _checkbox_unterordner.setSelected(true);

        //Komponenten in den Container
        _panel_search.add(_label_dateisuche);
        _panel_search.add(_label_begriffsuche);
        _panel_search.add(_textfeld_begriffsuche);
        _panel_search.add(_textfeld_dateisuche);
        _panel_search.add(_combobox_dateibegriff_beziehung);
        _panel_search.add(_label_begriffverknuepfung);
        _panel_search.add(_checkbox_grossklein);
        _panel_search.add(_checkbox_unterordner);
        _panel_search.add(_checkbox_versteckt);
        _panel_search.add(_checkbox_zip);
        _panel_options.add(_label_suchpfad);
        _panel_options.add(_textfeld_suchpfad);
        _panel_options.add(_label_typ);
        _panel_options.add(_textfeld_typ);
        _panel_options.add(_combobox_dateityp);
        _panel_options.add(_label_dateigoesse);
        _panel_options.add(_textfeld_von_dateigroesse);
        _panel_options.add(_textfeld_bis_dateigroesse);
        _panel_options.add(_label_von_dateigroesse);
        _panel_options.add(_label_bis_dateigroesse);
        _panel_options.add(_label_mb1);
        _panel_options.add(_label_mb2);
        _panel_options.add(_ftextfeld_von_datum);
        _panel_options.add(_label_von_zeitraum);
        _panel_options.add(_label_bis_zeitraum);
        _panel_options.add(_ftextfeld_bis_datum);
        _panel_options.add(_label_zeitraum);

        // TODO: hier geaendert
        _pane_tabelle.setViewportView(_tabelle_gefunden);

        _fenster.getContentPane().add(_panel_search);
        _fenster.getContentPane().add(_panel_options);
        _fenster.getContentPane().add(_button_find);
        _fenster.getContentPane().add(_pane_tabelle);
        _fenster.getContentPane().add(_label_statuszeile);
        _fenster.setVisible(true);
    }

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

Gruß

Romsl

Edit: Sollte es Dein Problem gelöst haben dann diesen Topic bitte mit Erledigt markieren!
 
Zuletzt bearbeitet: