JTable und Column-Size

foellerer

Grünschnabel
Hallo,

ich habe folgendes Problem:

Mein JTable soll an einer Spalte eine bestimmte Größe haben.
Klappt auch alles super, nur springt die Spaltengröße beim "Mausklicken" jedesmal
auf die Standartgröße, die nirgends eingestellt habe... und
springt auch immer wieder zurück auf die von mir gewollte Größe nach ein paar Millisekunden.

Jegliche Kombination von setMinWidth, setMaxWidth und preferredWidth mit table.setAutoResize off, lastColumn und was auch immer bringt keine Verbesserung.. Im TableRenderer, im MouseListener...


hat jemand das selbe Problem gehabt oder hat eine Lösung?

Danke!
 
Hi

probier mal folgendes:
Code:
this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

TableColumn tc = table.getTableHeader().getColumnModel().getColumn(col);
table.getTableHeader().setResizingColumn(tc);
table.getTableHeader().getResizingColumn().setWidth(111);


vielleicht geht es einfacher aber bei mir funktioniert das.
 
vielen dank,

es wird besser, also das Hin und Herspringen geschieht nicht mehr so oft, aber ganz weg ist s nicht..
wo soll ich denn den code überall reinpacken?
in den renderer, mouslistener?
hab ihn jetzt nur in der methode, wo das fenster beschrieben wirs und im renderer, im mouslistener wird es nur schlimmer :-)

vielen dank
 
hi

bei deinem code fehlen einige Methoden, die ich bräuchte.
beim Posten von code beachte den Button um code einzubetten.
 
is drin.. sorry


PHP:
 package benutzeroberflaeche;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

import produkte.Eigenschaften;
import produkte.Produkt;
import speichern.Einlesen;


public class Produktsuche {

    /**
     * ArrayList für die Attribute.
     */
    private static ArrayList<Eigenschaften> pAttribute = 
        new ArrayList<Eigenschaften>();
    
    /**
     * ArrayList, die die Attribute, die vom Benutzer ausgew&auml;hlt werden,
     * beinhaltet.
     */
    private static ArrayList<String> produktArray = new ArrayList<String>();
    
    /**
     * "Suchen"-Button f&uuml;r das Fenster "Produktsuche".
     */
    private JButton suchen = new JButton("         Suchen         ");
    
    /**
     * "Abbrechen"-Button f&uuml;r das Fenster "Produktsuche".
     */
    private JButton abbrechen = new JButton("     Abbrechen   ");

    /**
     * Bildchen f&uuml;r den Infobutton.
     */
    private ImageIcon icon = new ImageIcon(getClass().getClassLoader().
        getResource("http://www.tutorials.de/forum/images/button_info.gif"));

    /**
     * "InfoButton" - Button &ouml;ffnet dem User ein Informationsfeld.
     */
    private JButton infoButton = new JButton("            Info            ", 
        icon);
    

    /**
     * Checkbox in der Tabelle.
     */
    private JCheckBox checkbox = new JCheckBox();

    /**
     * Rahmen des Fensters "Produktsuche".
     */
    private JFrame produktsuche;

    /**
     * Tabelle f&uuml;r Produktliste.
     */
    private JTable produktliste;

    /**
     * ArrayList, die die Produkte, die vom Benutzer ausgew&auml;hlt werden,
     * beinhaltet.
     */
    private ArrayList<Produkt> proArray = new ArrayList<Produkt>();
    
    /**
     * ArrayList, die die Eingabefelder beinhaltet.
     */
    private ArrayList<JComboBox> eingabespeichern = 
        new ArrayList<JComboBox>();
    
    /**
     * ArrayList mit den Eingabetypen.
     */
    private ArrayList<String> eingabetyp = new ArrayList<String>();
    
    /**
     * Zwischenspeicher f&uuml;r die Nummer von markierten Zeilen.
     */
    private ArrayList<Integer> zeilenspeicher = new ArrayList<Integer>();

    /**
     * ArrayList mit den Produkten f&uuml;r den Mouselistener.
     */
    private ArrayList<Produkt> produk = Einlesen.getProdukte();
    
    /**
     * Liste der Produkte. 
     */
    private ArrayList<Produkt> pro = Matrixansicht.getProduktdatentmp();
    
    /**
     * Speicher f&uuml;r die Inhalte der Attribute, die in den Comboboxen 
     * ausgegeben werden sollen.
     */
    private Object eigens;
    
    /**
     * Variable zum Zwischenspeichern einer Zeilennummer.
     */
    private int zeile;

    /**
     * Zwischenspeicher f&uuml;r die ausgew&auml;hlten Produkte.
     */
    private Produkt ausgewaehlt;
    
    /**
     * Inhalt f&uuml;r die Tabellen: Arrayliste der Produkte.
     */ 
    private ArrayList<String> bewertungskriterien = 
        Matrixansicht.getKriterientable();
    
    /**
     * Inhalt f&uuml;r die Tabellen: Arrayliste der Produkte.
     */ 
    private ArrayList<String> attributtypen = new ArrayList<String>();
    
    /**
     * ArrayList zum Speichern der Attributnamen.
     */
    private ArrayList<String> newArray = new ArrayList<String>();
    
    /**
     * ArrayList, in der die Produktnamen gespeichert werden.
     */
    private ArrayList<String> produktname = new ArrayList<String>();
    
    /**
     * Icon f&uuml;r die den "Abbrechen Button".
     */
    private ImageIcon abbr = new ImageIcon(getClass().getClassLoader().
            getResource("http://www.tutorials.de/forum/images/abbr.png"));
    
    /**
     * Icon f&uuml;r die den "Suchen Button".
     */
    private ImageIcon suche = new ImageIcon(getClass().getClassLoader().
            getResource("http://www.tutorials.de/forum/images/suche.png"));
    
    /**
     * Warnung, dass das Optionsformat nicht ber&uuml;cksichtigt wird..
     */
    private ImageIcon icon1 = new ImageIcon(getClass().getClassLoader().
        getResource("http://www.tutorials.de/forum/images/infoprosuch.gif"));
    
    /**
     * Konstruktor mit aufruf der Produktsuche.
     */
    public Produktsuche() {
    }
    
    /**
     * Getter f&uuml;r das ProduktArray.
     * @return produktArray gibt das Array zur&uuml;ck.
     */
    public static ArrayList<String> getproduktArray() {
        return produktArray;
    }


    /**
     * Erstellt ein Fenster f&uuml;r "Produktsuche".
     */
    public void produktsuche() {
        aTypenAuslesen();
        produktsuche = new JFrame("Produktsuche");
        produktsuche.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Container suche = produktsuche.getContentPane();
        suche.setLayout(new BorderLayout());
        // Tablemodel Produktliste.
        produktliste = erstelleTabelle();
        
        produktliste.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        TableColumn tc2 = produktliste.getTableHeader().getColumnModel().getColumn(0);
        produktliste.getTableHeader().setResizingColumn(tc2);
        produktliste.getTableHeader().getResizingColumn().setWidth(425);
        
        TableColumn tc = produktliste.getTableHeader().getColumnModel().getColumn(1);
        produktliste.getTableHeader().setResizingColumn(tc);
        produktliste.getTableHeader().getResizingColumn().setWidth(30);
        
        produktliste.setDefaultRenderer(produktliste.getColumnClass(1),
                new Renderer());
        produktliste.addMouseListener(new MouseL());
        produktliste.setRowSelectionAllowed(true);
        // Linke Seite des Fensters
        JPanel west = new JPanel(new BorderLayout()); 
        west(west);
        JPanel links = new JPanel(new BorderLayout()); 
        links.add(west, BorderLayout.CENTER);
        // Rechte Seite des Fensters 
        JPanel eingabefelder = new JPanel(new GridLayout(
            attributtypen.size(), 2, 2, 5)); 
        eingabe(eingabefelder);
        //"center" = Attribute.
        JPanel center = new JPanel(new BorderLayout());
        //Ausgelagerte Methode fuer Center.
        center(center);
        center.setBackground(Color.WHITE);
        center.add(eingabefelder, BorderLayout.CENTER);
        FlowLayout flowlay = new FlowLayout();
        JPanel westinfo = new JPanel(flowlay);
        //Ausgelagerte Methode fuer die Buttons.
        buttons(westinfo);
        flowlay.setHgap(10);
        flowlay.setVgap(20);
        //Panel "abstaende" fuer Abstaende an den Seiten.
        JPanel abstaende = new JPanel(new BorderLayout()); 
        //ausgelagerte Methode fuer die Abstaende um das Panel abstaende.
        abstand(abstaende);
        JPanel attrib = new JPanel(new BorderLayout());
        abstaende.add(new JScrollPane(attrib), BorderLayout.CENTER);   
        attrib.add(center, BorderLayout.CENTER);
        JPanel alles = new JPanel(new BorderLayout());
        alles.add(abstaende, BorderLayout.CENTER);
        alles.add(links, BorderLayout.WEST);
        suche.add(westinfo, BorderLayout.SOUTH);
        suche.add(alles, BorderLayout.CENTER);
        produktsuche.setResizable(false);
        produktsuche.pack();
        produktsuche.setBounds(10, 10, 1100, 500);
        // In der Mitte des Bildschirmes platzieren
        produktsuche.setLocation((Toolkit.getDefaultToolkit()
            .getScreenSize().width - produktsuche.getSize().width) / 2,
            (Toolkit.getDefaultToolkit().getScreenSize().height - produktsuche
            .getSize().height) / 2);
        produktsuche.setVisible(true);
    }
    
    /**
     * Methode um das in das JPanel Buttons mit den jeweiligen
     * Buttons zu f&uuml;llen.
     * @param westinfo JPanel, in das die Buttons reinkommen.
     * @return westinfo JPanel, in das die 
     * Buttons reinkommen.
     */
    public JPanel buttons(JPanel westinfo) {
        westinfo.add(infoButton);
        westinfo.add(suchen);
        suchen.setToolTipText("Suchen Sie Ihr Produkt");
        suchen.setIcon(suche);
        suchen.addActionListener(new Listener());
        westinfo.add(abbrechen);
        abbrechen.addActionListener(new Listener());
        abbrechen.setIcon(abbr);
        abbrechen.setToolTipText("Abbruch - zur\u00fcck zur Matrixansicht");
        infoButton.addActionListener(new Listener());
        infoButton.setToolTipText("Infos rund um die Produktsuche");
        
        return westinfo;
    }
    
    /**
     * Methode um das in das JPanel eingabe beliebig viele
     * Textfelder, Comboboxen f&uuml;r den jeweiligen Attribuswert
     * und Labels mit den Attributstname zu erstellen und
     * Abst&auml;nde an den Seiten zu erzeugen.
     * @param einga JPanel, in das die Inhate reinkommen.
     * @return einga JPanel, in das die Inhate reinkommen. 
     */
    public JPanel eingabe(JPanel einga) { 
        einga.setBackground(Color.WHITE);
        for (int i = 0; i < attributtypen.size(); i++) {
            /*Fuer Strings und Doubles beliebig 
            *viele Comboboxen mit Inhalten Attributswerte von allen
            *Produkten.
            */
            if (attributtypen.get(i).equals("String") 
                || attributtypen.get(i).equals("Double")
                || attributtypen.get(i).equals("Boolean")) {
                    einga.add(new JLabel("      " 
                        + bewertungskriterien.get(i) + "     "));
                    JComboBox eingabe = new JComboBox();
                    eingabe.setBackground(Color.WHITE);
                    Object leer = "";
                    eingabe.addItem(leer);
                for (int j = 0; j < pro.size(); j++) {
                    eigens = pro.get(j).getPAttribute().get(i).getInhalt();
                    eingabe.addItem(eigens);
                    einga.add(eingabe);
                    eingabetyp.add("String");
                    eingabespeichern.add(eingabe);
                }   
            } else if (attributtypen.get(i).equals("Option")) {
                eingabetyp.add("Option");
            }
        }
        return einga;
    }
    
    
    /**
     * Methode um Abst&auml;nde um die Componenten zu erzeugen.
     * @param abstand JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     * @return abstand JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     */
    public JPanel abstand(JPanel abstand) {
        FlowLayout georg = new FlowLayout();
        JPanel platzmacherrechts = new JPanel(georg);
        georg.setHgap(15);
        georg.setVgap(15);
        abstand.add(platzmacherrechts, BorderLayout.EAST);
        JPanel platzmacherlinks = new JPanel(georg);
        abstand.add(platzmacherlinks, BorderLayout.WEST);
        JPanel platzmachero = new JPanel(georg);
        abstand.add(platzmachero, BorderLayout.NORTH);             
        return abstand;
    }
    
    /**
     * Methode um Abst&auml;nde um die Componenten zu erzeugen.
     * @param west JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     * @return west JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     */
    public JPanel west(JPanel west) {
        FlowLayout georg = new FlowLayout();
        georg.setHgap(15);
        georg.setVgap(15);
        JPanel platzmacherob = new JPanel(georg);
        west.add(platzmacherob, BorderLayout.NORTH);
        JPanel platzmacherli = new JPanel(georg);
        west.add(platzmacherli, BorderLayout.WEST);
        west.add(new JScrollPane(produktliste), BorderLayout.CENTER);          
        return west;
    }
    
    /**
     * Methode um Abst&auml;nde um die Componenten zu erzeugen.
     * @param center JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     * @return center JPanel, in dem die 
     * Abst&auml;nde um ein "Objekt" sind.
     */
    public JPanel center(JPanel center) {

        JLabel text = new JLabel();
        text.setIcon(icon1);
        center.add(text, BorderLayout.NORTH);
        JPanel panelunten = new JPanel();
        panelunten.setBackground(Color.WHITE);
        center.add(panelunten, BorderLayout.SOUTH);
        JPanel panelrechts = new JPanel();
        panelrechts.setBackground(Color.WHITE);
        center.add(panelrechts, BorderLayout.EAST);
        JPanel panellinks = new JPanel();
        panellinks.setBackground(Color.WHITE);
        center.add(panellinks, BorderLayout.WEST);
        return center;
    }
      
    
    /**
     * Vergleicht die Attribute der ausgew&auml;hlten Produkte mit pAttribute.
     * @return produktArray gibt ein ProduktArray zur&uuml;ck.
     */
    public ArrayList<String> suche() {
        Object ct2 = null;
        produktArray.clear();
        for (int j = 0; j < proArray.size(); j++ ) {
            newArray.clear();
            for (int k = 0; k < pAttribute.size(); k++ ) {
                
                Object ct = proArray.get(j).getPAttribute().get(k).getInhalt();
                try {
                    ct2 = (pAttribute.get(k).getInhalt().toString()
                        .replace("?", ""));
                } catch (NullPointerException e) {
                    /*Hier funktioniert die Produktsuche manchmal leider noch  
                     *nicht einwandtfrei und es wird eine NullPointerException 
                     *geworfen.
                     */
                    JOptionPane.showMessageDialog(null, "Es ist ein Fehler" 
                        + "aufgetreten. Bitte oeffnen Sie Ihre Datei erneut" 
                        + "oder fahren Sie mit andern Funktionen fort.",
                        "Fehler", (JOptionPane.INFORMATION_MESSAGE));
                    produktsuche.dispose();
                }
                System.out.println(ct + "   " + ct2);
                if (ct.equals(ct2)) {
                    newArray.add(pAttribute.get(k).getName());   
                }  
            }
            produktname.add(proArray.get(j).getProduktname());
            produktArray.addAll(newArray);
            produktArray.add("");
        }
        produktArray.add(" ");
        produktArray.addAll(produktname);
        System.out.println(produktArray);
        return produktArray;
    }
    
    /**
     * Speichert die eingegebenen/ausgew&auml;hlten Strings in pAttribute. 
     */
    public void speicher() {
        pAttribute = new ArrayList<Eigenschaften>();
        int k = 0;
        int i = 0;
        while (k < eingabetyp.size()) { 
            if (eingabetyp.get(k).equals("Option")) {
                pAttribute.add(speichern.Einlesen.bastelAttribut(
                        eingabetyp.get(k), bewertungskriterien.get(i), 
                        "", ""));
                k += 1;
            } else {
                pAttribute.add(speichern.Einlesen.bastelAttribut(
                    eingabetyp.get(k), bewertungskriterien.get(i), 
                    eingabespeichern.get(k).getSelectedItem().toString(), ""));
                k += pro.size();       
            }    
            i++;
        }
        
    }
    
    
    /**
     * Methode zum Auslesen der Attributstypen.
     */
    private void aTypenAuslesen() {
        ArrayList<Eigenschaften> tmp = pro.get(0).getPAttribute();
        attributtypen.clear();
        for (int i = 0; i < tmp.size(); i++) {
            attributtypen.add(tmp.get(i).getTyp().toString()); 
        }
    }
    

    private class Listener implements ActionListener {

        /**
         * Reagiert auf die Ereignisse bei einem "Buttonklick".
         * 
         * @param event "Buttonklick"
         */
        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == abbrechen) {
                produktsuche.dispose();
            } else if (event.getSource() == suchen) {
                speicher();
                suche();
                produktsuche.dispose();
                new Suche();

            } else if (event.getSource() == infoButton) {
                @SuppressWarnings("unused")
                Infos proinfo = new Infos("infoproduktsuche.gif");
            }
        }
    }

    /**
     * Standard-Aktualisierungsoperation. Void - keine R&uuml;ckgabe.
     */
    public void aktualisiereListe() {
        aktualisiereListe(false);
    }

    /**
     * Aktualisiert den Inhalt der Tabelle.
     * 
     * @param init false, falls nur aktualisiert wird.
     * @return neues Tablemodel f&uuml;r "produktliste".
     */
    private ProduktTableModel aktualisiereListe(boolean init) {
        ProduktTableModel tablemodel = new ProduktTableModel();
        // Setzt beim Aktualisieren neue Inhalte.
        if (!init) {
            produktliste.setModel(tablemodel);
        }
        return tablemodel;
    }

    /**
     * Erstellt eine Tabelle aus den Produkten.
     * 
     * @return die Tabelle.
     */
    private JTable erstelleTabelle() {
        return new JTable(aktualisiereListe(true));
    }

    


    private class Renderer extends DefaultTableCellRenderer {

        /**
         * SerialisierungsID.
         */
        private static final long serialVersionUID = -2715405660821835786L;
        
        // checkstyle: stop parameter number check
        /**
         * &Uuml;berschriebene Methode, um Checkboxen zur&uuml;ckzugeben.
         * @param table die zugeh&ouml;rige Tabelle.
         * @param value  Wert des Tabellenzelle.
         * @param isSelected  ob die Zelle ausgew&auml;hlt ist.
         * @param hasFocus  ob die Zelle umrahmt ist.
         * @param row Zeile.
         * @param column  Spalte.
         * @return Component.
         */
        public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus, int row,
            int column) {
            Component rueckgabe = null;
            rueckgabe = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, column);
            TableColumn tc = produktliste.getTableHeader().getColumnModel().getColumn(1);
            produktliste.getTableHeader().setResizingColumn(tc);
            produktliste.getTableHeader().getResizingColumn().setWidth(30);
            produktliste.setRowHeight(30);
            TableColumn tc2 = produktliste.getTableHeader().getColumnModel().getColumn(0);
            produktliste.getTableHeader().setResizingColumn(tc2);
            produktliste.getTableHeader().getResizingColumn().setWidth(425);
            if (zeilenspeicher.contains(row)) {
                rueckgabe.setBackground(new Color(117, 193, 242));
                // Fuer die Checkboxen an Spalte N°1.
                if (column == 1) {
                    checkbox.setHorizontalAlignment(JCheckBox.CENTER);
                    rueckgabe = checkbox;
                    checkbox.setVisible(true);
                    checkbox.setSelected(false);
                    if (zeilenspeicher.contains(row)) {
                        checkbox.setSelected(true);
                        rueckgabe.setBackground(new Color(117, 193, 242));
                    }
                    if (!zeilenspeicher.contains(row)) {
                        checkbox.setSelected(false);
                        rueckgabe.setBackground(Color.WHITE);
                    }
                }
            }
            if (!zeilenspeicher.contains(row)) {
                rueckgabe.setBackground(Color.WHITE);
//                tc.setMaxWidth(30);
//                tc.setMinWidth(30);
                if (column == 1) {
                    checkbox.setHorizontalAlignment(JCheckBox.CENTER);
                    rueckgabe = checkbox;
                    checkbox.setVisible(true);
                    checkbox.setSelected(false);
                    if (!zeilenspeicher.contains(row)) {
                        checkbox.setSelected(true);
                        rueckgabe.setBackground(new Color(117, 193, 242));
                    }
                    if (!zeilenspeicher.contains(row)) {
                        checkbox.setSelected(false);
                        rueckgabe.setBackground(Color.WHITE);
                    }
                }
            }
            return rueckgabe;
        }
        // checkstyle: resume parameter number check
    }


    private class ProduktTableModel extends AbstractTableModel {

        /**
         * SerialisierungsID.
         */
        private static final long serialVersionUID = -3042987409161204297L;

        /**
         * Gibt die Zeilenanzahl &uuml;ber die Anzahl der Produkte zur&uuml;ck.
         * 
         * @return Zeilenanzahl
         */
        public int getRowCount() {
            int zeilenanzahl = pro.size();
            return zeilenanzahl;
        }

        /**
         * Gibt die Spaltenanzahl zur&uuml;ck.
         * @return spaltenanzahl, 2.
         */
        public int getColumnCount() {
            int spaltenanzahl = 2;
            return spaltenanzahl;
        }

        /**
         * Die Spalten&uuml;berschriften.
         * @param column Spalte
         * @return ergebnis - Name der Spalte
         */
        public String getColumnName(int column) {
            String ergebnis = "";
            switch (column) {
            case 0:
                ergebnis = "Produkte";
                break;
            case 1:
                ergebnis = "";
                break;
            default:
                ergebnis = "";
                break;
            }
            return ergebnis;
        }

        /**
         * Gibt den Inhalt der Zelle zur&uuml;ck.
         * @param row Zeile
         * @param column Spalte
         * @return n Object
         */
        public Object getValueAt(int row, int column) {
            Object zurueck = null;
            Produkt bsp = pro.get(row);
            switch (column) {
            case 0:
                zurueck = bsp.getProduktname();
                break;
            case 1:
                zurueck = bsp.getIsEdit();
                break;
            default:
                zurueck = "";
                break;
            }
            return zurueck;
        }

        /**
         * Methode, ob die Inhalte der Zellen ver&auml;nderbar sind. 
         * @param row Zeile
         * @param column Spalte
         * @return false - also nicht ver&auml;nderbar.
         */
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    }

    /**
     * MouseListener zum Abh&ouml;ren von Mouse-Aktionen. (Mouseklicks).
     */
    private class MouseL implements MouseListener {

        /**
         * Leere Methode.
         * @param event leer
         */
        public void mouseClicked(MouseEvent event) {
        }

        /**
         * Leere Methode.
         * @param event leer
         */
        public void mouseEntered(MouseEvent event) {
        }

        /**
         * Leere Methode.
         * @param event leer
         */
        public void mouseExited(MouseEvent event) {
        }

        /**
         * Leere Methode.
         * @param event leer
         */
        public void mousePressed(MouseEvent event) {
        }

        /**
         * Methode f&uuml;r das Reagieren der Klicks auf die Tabelle.
         * @param event Mouseklick.
         */
        @Override
        public void mouseReleased(MouseEvent event) {
            produktliste.setAutoResizeMode(produktliste.AUTO_RESIZE_OFF);

            if (event.getButton() == 1) {


                // "zeile" wird ueber Mouseklick bestimmt.
                zeile = produktliste.rowAtPoint(event.getPoint());
                ausgewaehlt = produk.get(zeile);
                /*
                 * "proArray" mit den Attributen fuellen, die angeklickt werden
                 * und nicht schon in "checkArray" enthalten sind.
                 */
                if (!proArray.contains(ausgewaehlt)) {
                    proArray.add(ausgewaehlt);
                } else {
                    proArray.remove(ausgewaehlt);
                }
                if (!zeilenspeicher.contains(zeile)) {
                    zeilenspeicher.add(zeile);
                } else {
                    zeilenspeicher.remove((Object) zeile);
                }
                aktualisiereListe();
            }
        }
    }
}
 
Zuletzt bearbeitet:
wenn du code postest poste bitte die variablen und importe mit, das erspart sehr viel arbeit, denn im Moment müsste ich jede Variable von dir anlegen usw.
 
Zurück