JTable zeigt keinen JSrollPane

Ach so, das ist aber sehr verwunderlich kannst je mal den gesamten Code hoch laden falls du dir nicht die Arbeit machen willt alles an meinen Code anzupassen da muss noch irgenwo ein Fehler sein. Ich schau es mir gerne nochmal an.

Falls ich dir doch helfen könnte würde ich mich über ein Renommee freuen.
 
Heyho...

die meisten Ideen wurden schon gepostet... aber liegt es vielleicht hier dran:
Java:
JScrollPane scrollPane = new    JScrollPane (
     table,
     ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
     ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
);

Durch das NEVER werden die Bars doch nie angezeigt...
Ändere das mal in ALWAYS oder AS_NEEDED (default Einstellung) :)

Hoffe es hilft - Viel Glück!

Gruß
Felix

Edit:
Hab den Post wohl überlesen :)
 
Zuletzt bearbeitet:
Dieser Lösungsvorschlag wurde doch 5 Post weiteroben auch schon gemacht. Hat angeblich nichts genützt.
Ich denke auch, dass es am einfachsten wäre, wenn wir mal den gesamten Code sehen könnten, damit wir eine Chance haben die Fehlerursache zu finden.
 
Hallo,

es ist vielleicht eine dumme Frage, aber ist die Tabelle überhaupt größer als der sichtbare Bereich? Es werden normal erst dann die Scrollbars angezeigt, natürlich unter der Voraussetzung, dass die Policies noch Standard, bzw AS_NEEDED sind.

MFG

zEriX
 
GUI Klasse:
Code:
package graphics;

import dbzugriff.DBZugriff;


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.sql.*;

import javax.swing.*;
import javax.swing.border.EmptyBorder;


public class graphics extends JFrame {

    private static final long serialVersionUID = 7057154323164363358L;
    
    DBZugriff DBVerbindung;

    public graphics(){
        
        DBVerbindung = new DBZugriff();
        
        JMenuBar menueZeile = new JMenuBar();
        this.setJMenuBar(menueZeile);
        
        JMenu dateiMenue = new JMenu("Datei");
        JMenuItem beendenEintrag = new JMenuItem("Beenden");
        beendenEintrag.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent e){ 
            
                System.exit(0);
                
            }});
        dateiMenue.add(beendenEintrag);
        
        JMenu hilfeMenue = new JMenu("Hilfe");
        
        JMenuItem hilfeEintrag = new JMenuItem("Hilfe");
        hilfeEintrag.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent e){ 
            
                // hier der Befehl um die Hilfe zu öffnen
                
            }});
        hilfeMenue.add(hilfeEintrag);
        
        JMenuItem aboutEintrag = new JMenuItem("About");
        hilfeEintrag.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent e){ 
            

                
            }});
        hilfeMenue.add(aboutEintrag);
        
        menueZeile.add(dateiMenue);
        menueZeile.add(hilfeMenue);
        
        fensterErzeugen();
        
    }
    
    // Eine Methode, die das Fenster erzeugt
    public void fensterErzeugen(){
        
        JPanel fensterPanel = new JPanel();
        fensterPanel.setLayout(new BoxLayout(fensterPanel, BoxLayout.Y_AXIS));
        fensterPanel.add(formularPanel());
        fensterPanel.add(kundenDetailPanel());
        
        getContentPane().add(fensterPanel);
        
        ((JComponent) getContentPane()).setBorder(new EmptyBorder(6, 6, 6, 6));
        setTitle("Kundenverwaltung");
        pack();
        setSize(getWidth(), getHeight());
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }
    
    // Die Methode für das Formular mit den Kundendaten
    public Container formularPanel(){
        
        JPanel formularPanel = new JPanel();
        formularPanel.setLayout(new GridLayout(8, 2, 1, 2));
        
            JLabel lakdnr = new JLabel("Kunden Nummer:");
            JTextField tfkdnr = new JTextField("");
            formularPanel.add(lakdnr);
            formularPanel.add(tfkdnr);
            
            JLabel laname = new JLabel("Name:");
            JTextField tfname = new JTextField("");
            formularPanel.add(laname);
            formularPanel.add(tfname);
            
            JLabel lastraße = new JLabel("Straße:");
            JTextField tfstraße = new JTextField("");
            formularPanel.add(lastraße);
            formularPanel.add(tfstraße);
            
            JLabel laplz = new JLabel("Postleitzahl:");
            JTextField tfplz = new JTextField("");
            formularPanel.add(laplz);
            formularPanel.add(tfplz);
            
            JLabel laort = new JLabel("Ort:");
            JTextField tfort = new JTextField("");
            formularPanel.add(laort);
            formularPanel.add(tfort);
            
            JLabel laland = new JLabel("Land:");
            JTextField tfland = new JTextField("");
            formularPanel.add(laland);
            formularPanel.add(tfland);
            
            JLabel latel = new JLabel("Telefon:");
            JTextField tftel = new JTextField("");
            formularPanel.add(latel);
            formularPanel.add(tftel);
            
            JLabel lafax = new JLabel("Telefax:");
            JTextField tffax = new JTextField("");
            formularPanel.add(lafax);
            formularPanel.add(tffax);
            
        
        JPanel banner = new JPanel();
        banner.setLayout(new BoxLayout(banner, BoxLayout.Y_AXIS));
            
            // Einbinden des Logos als Incon
            
            JPanel dasLogo = new JPanel();
            dasLogo.setLayout(new BoxLayout(dasLogo, BoxLayout.Y_AXIS));
            ImageIcon icon = createImageIcon("bi_logo.gif", "firma");
            JLabel BILogo = new JLabel(icon, JLabel.CENTER);
            JLabel leer1 = new JLabel(" ");
            JLabel leer2 = new JLabel(" ");
            dasLogo.add(BILogo);
            dasLogo.add(leer1);
            dasLogo.add(leer2);

            JPanel buttons = new JPanel();
            buttons.setLayout(new GridLayout(2, 2, 2, 2));
            
            JButton neuerKunde = new JButton("Neuer Kunde");
            neuerKunde.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent arg0) {
                    
                }
            });
            buttons.add(neuerKunde);
            
            JButton sucheKunde = new JButton("Kunden suchen");
            sucheKunde.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent arg0) {
                    
                }
            });
            buttons.add(sucheKunde);
            
            JButton ansprpartner = new JButton("Ansprechpartner");
            ansprpartner.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent arg0) {
                    
                }
            });
            buttons.add(ansprpartner);
            
            JButton loescheKunde = new JButton("Kunden löschen");
            loescheKunde.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent arg0) {
                    
                }
            });
            buttons.add(loescheKunde);
    
        banner.add(dasLogo);
        banner.add(buttons);
        
        JPanel formular = new JPanel();
        formular.add(formularPanel);
        formular.add(banner);

        return formular;
    }
    
    
    public Container kundenDetailPanel(){
        
            JPanel hilfsPanel = new JPanel();
        hilfsPanel.setLayout(new BoxLayout(hilfsPanel, BoxLayout.Y_AXIS));
        JPanel tabellenPanel = new JPanel();
        
        JPanel leerRaum = new JPanel();
        leerRaum.setLayout(new BoxLayout(leerRaum, BoxLayout.Y_AXIS));
            JLabel leer1 = new JLabel(" ");
            JLabel leer2 = new JLabel(" ");
            leerRaum.add(leer1);
            leerRaum.add(leer2);

        JPanel tablePanel = new JPanel();
        tablePanel.add(tabelle());

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4, 1, 1, 1));
                
            JButton marbaCAD = new JButton("MarbaCAD");
            marbaCAD.addActionListener(new ActionListener(){
                
                public void actionPerformed(ActionEvent arg0){
                    
                    
                }
                
            });
            buttonPanel.add(marbaCAD);
            
            JButton maschinen = new JButton("Maschinen");
            maschinen.addActionListener(new ActionListener(){
                
                public void actionPerformed(ActionEvent arg0){
                    
                    
                }
                
            });
            buttonPanel.add(maschinen);
            
            JButton service = new JButton("Service Vorort");
            service.addActionListener(new ActionListener(){
                
                public void actionPerformed(ActionEvent arg0){
                    
                    
                }
                
            });
            buttonPanel.add(service);
            
            JButton hotline = new JButton("Hotline");
            hotline.addActionListener(new ActionListener(){
                
                public void actionPerformed(ActionEvent arg0){
                    
                    
                }
                
            });
            buttonPanel.add(hotline);
            
        tabellenPanel.add(tablePanel, BorderLayout.WEST);
        tabellenPanel.add(buttonPanel, BorderLayout.EAST);
        hilfsPanel.add(leerRaum);
        hilfsPanel.add(tabellenPanel);
        

        
        return hilfsPanel;
    }
    
    public Component tabelle() {
        JTable mytable = new JTable(new tabellenModell());
        mytable.setPreferredScrollableViewportSize(new Dimension(500, 200));
        mytable.setFillsViewportHeight(true);
        
        JScrollPane scrollPane = new JScrollPane(mytable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        pack();
        getContentPane().add(scrollPane);
        
        scrollPane.setViewportView(mytable);
       
        return mytable;
    }
    
    public static void main(String [] args){
        
        graphics meineAnwendung = new graphics();
        
    }
    
    // Hilfsmethode zur Darstellung der Logos    
    protected static ImageIcon createImageIcon(String path, String description) {

        java.net.URL imgURL = graphics.class.getResource(path);
        
        if (imgURL != null) {
            return new ImageIcon(imgURL, description);
        } else {
            System.err.println("Die Datei konnte nicht gefunden werden: " + path);
            return null;
        }
    }

}

Klasse für TableModel
Code:
package graphics;

import java.awt.Component;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

public class tabellenModell extends javax.swing.table.AbstractTableModel{
        
    String[] columnNames = {"First Name",
                "Last Name",
                "Sport",
                "# of Years",
                "Vegetarian"};
    Object[][] data = {
                {"Mary", "Campione",
                    "Snowboarding", new Integer(5), new Boolean(false)},
                {"Alison", "Huml",
                 "Rowing", new Integer(3), new Boolean(true)},
                {"Kathy", "Walrath",
                 "Knitting", new Integer(2), new Boolean(false)},
                {"Sharon", "Zakhour",
                 "Speed reading", new Integer(20), new Boolean(true)},
                {"Philip", "Milne",
                 "Pool", new Integer(10), new Boolean(false)},
                {"Isaac", "Rabinovitch", 
                 "Nitpicking", new Integer(1000), new Boolean(false)}
    };
    public int getColumnCount() {
        return columnNames.length;
    }
    public int getRowCount() {
        return data.length;
    }
    public String getColumnName(int col) {
        return columnNames[col];
    }
    public Object getValueAt(int row, int col) {
        return data[row][col];
    }
    
    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }   
}
 
Du must nur die Methode tabelle() etwas ändern, dann gehts.
Gib anstelle der Tabelle die ScrollPane zurück, denn die Tabelle liegt ja in dieser ScrollPane drinn.

Versuchs mal so, bei mir gehts dann mit deinem Code:

PHP:
    public Component tabelle() {
      JTable mytable = new JTable(new tabellenModell());
      mytable.setPreferredScrollableViewportSize(new Dimension(500, 200));
      mytable.setFillsViewportHeight(true);
      
      JScrollPane scrollPane = new JScrollPane(mytable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
      pack();
//		Das ist nicht nötig
//    getContentPane().add(scrollPane);
      
      scrollPane.setViewportView(mytable);
     
      //gib die ScrollPane anstelle der Tabelle zurück
      return scrollPane;
  }
 
get doch wunderbar musst halt noch ein bischen an der Größe rum schrauben.

Hier war dein fehler
Java:
public Component tabelle() {
        JTable mytable = new JTable(new tabellenModell());
        mytable.setPreferredScrollableViewportSize(new Dimension(500, 200));
        mytable.setFillsViewportHeight(true);
        
        JScrollPane scrollPane = new JScrollPane(mytable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        pack();
        
        
        scrollPane.setViewportView(mytable);
       
        return scrollPane;  //du musst das ScrollPane zurückgeben welches dann eingebettet wird
    }
 
Zurück