Trotz richtiger ListSelectionMode kann ich keine Zeile sel?

Status
Nicht offen für weitere Antworten.

Nuke

Mitglied
Hallo,

also so schlimm wars noch nie... habe auch auf jtable visual guide von sun geschaut, mir die demo runtergeladen etc. und ich mache verdammt nochmals nicht anderes. Dennoch wird bei mir immer nur eine Zelle selektiert und nicht die komplette Zeile dazu noch in Dunkelblau, WARUM ???

Code:
tabelle.setRowSelectionAllowed(true);
		//tabelle.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
		tabelle.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

Damit mUSS es funtionieren!!!

kompletter Codeder Tabelle:


Code:
public class ImageListePanel extends JPanel implements ActionListener , ListSelectionListener
{
   
	static final long serialVersionUID = 1L;
   
	private SettingsPanel settings;
          
    private  JButton loadListBT = new JButton("Liste laden");
    private  JButton saveListBT = new JButton("Liste speichern");   
      
    private  JButton addRowBT		= new JButton();
    private  JButton delRowBT		= new JButton(); 
    
    private DefaultListModel listModel = new DefaultListModel();
    private JList liste = new JList(listModel);
    private JScrollPane listbereich = new JScrollPane(liste);
    private String[] spaltennamen = {"Status" , "Gruppe" , "Programm" , "Aufgabe" , "Datenträger" };
    private String[][] tabellendaten = new String [700][5];
   
    DefaultTableModel dm;
    JTable tabelle; 
    TrayIcon trayIcon = null;
    PopupMenu popup = new PopupMenu();
    MenuItem defaultItem = new MenuItem("sichtbar machen");
    MainWindow myWindow;
    
    public ImageListePanel() throws AWTException
    {
      
    	setLayout(null);
        
        add(loadListBT);
        add(saveListBT);       
        add(listbereich);
        add(addRowBT);
        add(delRowBT);

        /*if (SystemTray.isSupported())
        {

            SystemTray tray = SystemTray.getSystemTray();
            Image image = Toolkit.getDefaultToolkit().getImage("refresh.png");

            MouseListener mouseListener = new MouseListener() {
                
                public void mouseClicked(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse clicked!"); 
                   
                    
                }
                public void mouseEntered(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse entered!");                 
                }
                public void mouseExited(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse exited!");                 
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse pressed!");                 
                }
                public void mouseReleased(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse released!");                 
                }

            };
            popup.add(defaultItem);
            ActionListener exitListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("Exiting...");
                    System.exit(0);
                }
            };
            
           
            MenuItem defaultItem = new MenuItem("Exit");
            defaultItem.addActionListener(exitListener);
            popup.add(defaultItem);

            trayIcon = new TrayIcon(image, "Tray Demo", popup);
            tray.add(trayIcon);
            ActionListener actionListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    trayIcon.displayMessage("Action Event", 
                        "An Action Event Has Been Peformed!",
                        TrayIcon.MessageType.INFO);
                }
            };
            
            trayIcon.setImageAutoSize(true);
            trayIcon.addActionListener(actionListener);
            trayIcon.addMouseListener(mouseListener);            
            
            
            trayIcon.displayMessage("Finished downloading", 
                    "Your Java application has finished downloading",
                    TrayIcon.MessageType.INFO);
         
             
           

        }
        else 
        {
            System.err.println("System tray is currently not supported.");
        }*/
        
        listbereich.setBounds(826,0,160,340);
        loadListBT.setBounds(826,468,158,60);
        saveListBT.setBounds(826,529,158,60);       
        addRowBT.setBounds(826,341,40,40);
        delRowBT.setBounds(867,341,40,40);
        
        loadListBT.setIcon(new ImageIcon("images/pasteurl.png"));
        saveListBT.setIcon(new ImageIcon("images/refresh.png"));
        
        addRowBT.setIcon(new ImageIcon("images/add.row.png"));
        delRowBT.setIcon(new ImageIcon("images/delete.row.png"));
          
              
        dm = new DefaultTableModel(tabellendaten,spaltennamen);
        tabelle = new JTable( dm ){
        			/**
			 * 
			 */
			private static final long serialVersionUID = 1L; 
					Class[] types = new Class [] {        			
                    Boolean.class, String.class, String.class, String.class, String.class
                };
            @SuppressWarnings("unchecked")
			public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
            
        	public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
        	{
				Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
				
				/*---------------------------------------------------------------------------*/
				
				if (rowIndex % 2 == 0 && !isCellSelected(rowIndex,vColIndex))
				{
	                c.setBackground(new Color (245,245,245));
	            }
				else if (rowIndex % 2 == 0)
				{
					c.setBackground(new Color (245,245,245));
				}
				else
				{
	                c.setBackground(new Color (255,255,255));
	            }
				/*----------------------------------------------------------------------------*/
				
				return c;
			}
		};
		
		
		DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);       
        tabelle.getColumnModel().getColumn(1).setCellRenderer(renderer);
		tabelle.setRowSelectionAllowed(true);
		//tabelle.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
		tabelle.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        
		 /* tabelle.addMouseMotionListener(new MouseMotionAdapter()
		  {
	            public void mouseMoved(final MouseEvent evt)
	            {
	                Point p = evt.getPoint();
	                int row = tabelle.rowAtPoint(p);
	                int column = tabelle.columnAtPoint(p);
	                tabelle.editCellAt(row, column);
	            }
	        });*/
		  
		  
		 /* tabelle.addMouseListener(new MouseAdapter()
		  
		  {
			  public void mousePressed(MouseEvent evt)
			  {				  
				  
				  
				  ;}
			  });*/ 
                
              
        JScrollPane scrollPane = new JScrollPane( tabelle );
        add(scrollPane);
        scrollPane.setBounds(0,0,826,650);
        tabelle.setRowHeight(22);                
        
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        
        tabelle.setAutoCreateRowSorter(true);      
        
        listbereich.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        listbereich.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        liste.setCellRenderer(new Renderer());
        
        listModel.addElement("bla bla bla");
     
        
        addRowBT.addActionListener(this);
        delRowBT.addActionListener(this);
        liste.addListSelectionListener((ListSelectionListener) this);
        setColumnWidth();
    }
    
    public void setSP(SettingsPanel object) {
        this.settings = object;
    }
    public void valueChanged( ListSelectionEvent e )
    {
        if(!e.getValueIsAdjusting())
        {
            
        }
    }
    public void setColumnWidth() {
        tabelle.getColumnModel().getColumn(0).setPreferredWidth(40);
        tabelle.getColumnModel().getColumn(1).setPreferredWidth(50);
        tabelle.getColumnModel().getColumn(2).setPreferredWidth(100);
        tabelle.getColumnModel().getColumn(3).setPreferredWidth(500);
        tabelle.getColumnModel().getColumn(4).setPreferredWidth(100);
    }
    public void actionPerformed(final ActionEvent e)
    {
        
        if(e.getSource().equals( addRowBT))
        {      	
        	dm.insertRow(tabelle.getSelectedRow()+1, new Object[]{});
        }
        if(e.getSource().equals( delRowBT))
        {      	
        	if(tabelle.getSelectedRow() == -1)
        	{        		
        	}
        	else
        	{
        		dm.removeRow(tabelle.getSelectedRow());
        	}	
        }
     }
    
    public void mousePressed(MouseEvent e)
    {
    	dm.setValueAt("fff",1,1);
    }
    
}
 

André Uhres

Top Contributor
Code:
           public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
                Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
                if(isRowSelected(rowIndex)) return c;
...
 

Nuke

Mitglied
André Uhres hat gesagt.:
Code:
           public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
                Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
                if(isRowSelected(rowIndex)) return c;
...


Hallo Du,

wenn ich das:

Code:
if(isRowSelected(rowIndex))
				{
					return c;
				}

einfüge, dann bekommt meine prepareRenderer Methode aber keinen Return Wert ala c für die Component, da das Objekt c ja in der If-Konstruktion steht...

das ist der komplette Code:

Code:
  tabelle = new JTable( dm ){
        	/**
			 * 
			 */
			private static final long serialVersionUID = 1L; 
					Class[] types = new Class [] {        			
                    Boolean.class, String.class, String.class, String.class, String.class
                };
            @SuppressWarnings("unchecked")
			public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
            
        	public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
        	{
				Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
				
				/*---------------------------------------------------------------------------*/
				
				if (rowIndex % 2 == 0 && !isCellSelected(rowIndex,vColIndex))
				{
	                c.setBackground(new Color (245,245,245));
	            }
				else if (rowIndex % 2 == 0)
				{
					c.setBackground(new Color (245,245,245));
				}
				else
				{
	                c.setBackground(new Color (255,255,255));
	            }
				/*----------------------------------------------------------------------------*/
				
				
				if(isRowSelected(rowIndex))
				{
					return c;
				}	
				
				//return c;
				
			}
		};
 

André Uhres

Top Contributor
:roll: Manno, da hab ich extra das Statement davor mitgeschrieben,
damit jeder Heini weiss wo's einzufügen ist :D
 

Nuke

Mitglied
André Uhres hat gesagt.:
:roll: Manno, da hab ich extra das Statement davor mitgeschrieben,
damit jeder Heini weiss wo's einzufügen ist :D
:### aha :wink:

nur warum wird das "c" als return wert in der if-Konstruktion genommen ?? Wenn ich meinen "c" wert der vorher schon da war entferne, da findet java der compiler kein rückgabewert. Wenn ich meinen "c" wieder adde dann findet er einen rückgabewert natürlich sprich wenn nur dein "c" da steht dann findet der compiler keinen return wert. Hätte ich also meinen returnwert nicht da angegeben, dann würde der code von dir gar nicht funktionieren... wie siehst du das?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Trotz richtiger Daten, falsches Bild wird gezeichnet?! AWT, Swing, JavaFX & SWT 4
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
M editorPane bleibt zu klein trotz setPage AWT, Swing, JavaFX & SWT 6
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
A Swing Buttons werden trotz setVisible nicht dargestellt AWT, Swing, JavaFX & SWT 14
T Flackern trotz DoubleBuffering AWT, Swing, JavaFX & SWT 8
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
A trotz setSize keine breite AWT, Swing, JavaFX & SWT 4
K AWT flackern trotz buffering AWT, Swing, JavaFX & SWT 4
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
0 JTextPane copy/paste trotz editable(false) ? AWT, Swing, JavaFX & SWT 10
C Applet java.security.AccessControlException trotz signierten Jar AWT, Swing, JavaFX & SWT 7
J Swing JWindow flackert trotz Doppelpufferung AWT, Swing, JavaFX & SWT 2
B Swing JButton flackert trotz DoubleBufferings AWT, Swing, JavaFX & SWT 11
K Flackern trotz Double-Buffering AWT, Swing, JavaFX & SWT 10
S Swing JTable RowSorter trotz RowFilter abschalten? AWT, Swing, JavaFX & SWT 2
T Fenster wird trotz repaint() und revalidate() nicht sofort neu gezeichnet AWT, Swing, JavaFX & SWT 6
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
B JProgressbar wird nicht aktualisert, trotz Threads AWT, Swing, JavaFX & SWT 6
F Java heap space error trotz -Xmx512m AWT, Swing, JavaFX & SWT 9
O JFrame permanet im Vordergrund trotz Alt+Tab AWT, Swing, JavaFX & SWT 2
@ JPanel: kein paintComponent() trotz repaint() AWT, Swing, JavaFX & SWT 4
G Tabellenköpfe trotz Scrollpane ausschalten AWT, Swing, JavaFX & SWT 5
T JFrame#setSize trotz maximiert AWT, Swing, JavaFX & SWT 4
T Animation will nicht trotz Thread. AWT, Swing, JavaFX & SWT 14
S JFrame trotz undecorated vergroessern AWT, Swing, JavaFX & SWT 3
S Unterschiedliche Optik trotz gleicher Look and Feel Code? AWT, Swing, JavaFX & SWT 11
T repaint wird trotz Thread nicht ausgeführt AWT, Swing, JavaFX & SWT 5
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Objectmarker am Bildschirmrand(Repost in richtiger Section) AWT, Swing, JavaFX & SWT 0
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
A Richtiger Umgang mit jProgressBar AWT, Swing, JavaFX & SWT 2
A Savedialog - getSelectedFile() mit richtiger Endung. AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben