JTable - Problem mit markieren von Zellen

Status
Nicht offen für weitere Antworten.

nagash56

Aktives Mitglied
... aber es geht schon wieder ums JTable. Bin ein ziemlicher noob wenns um Swing geht und das JTable FAQ von Beni hat mir wirklich sehr geholfen (danke für die Arbeit :). Jedenfalls soll die Applikation einfach Telefonbucheinträge verwalten. Bei der Anzeige hab ich zwei Renderer verwendet weil ich das mal so probieren wollte, einen für die normalen Einträge und einen für die Adresseinträge der die Daten in einer ComboBox darstellt. Mein Problem ist jetzt dass wenn ich eine Reihe selektiere... nur die ComboBox die grüne Farbmarkierung bekommt obwohl ich mit gedacht hätte dass es die restlichen Einträge auch grün werden da auch im LabelRenderer der Hintergrund grün gesetzt wird.

thx

Code:
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;


class Node implements Serializable {
	Adresse add;
	Kontakt kon;
	
	Node(Kontakt k, Adresse a) {
		kon = k;
		add = a;
	}
	
	public Kontakt getContact() {
		return kon;
	}
	
	public Adresse getAdress() {
		return add;
	}
}

class Adresse implements Serializable {
	String strasse, ort, staat;
	
	Adresse( String s, String o, String st) {
		strasse = s;
		ort = o;
		staat = st;
	}
}


class Kontakt implements Serializable {
	String name, vorname, nick, telefon, handy, email, email2, geb;
	
	Kontakt( String n,
			 String v,
			 String ni,
			 String t,
			 String h,
			 String e,
			 String e2,
			 String g) {
		
		name = n;
		vorname = v;
		nick = ni;
		telefon = t;
		handy = h;
		email = e;
		email2 = e2;
		geb = g;
	}
}

public class Bilder
{
	public static void main( String args[] )
	{
		SwingUtilities.invokeLater(new Runnable(){
			public void run() {
				createGUI();
			}
		});
	}
	
	public static void createGUI() {
		UIManager.put("Label.font", "javax.swing.plaf.FontUIResource" +
				"[family=dialog.bold,name=Monospace,style=bold,size=14]");
		
		JFrame.setDefaultLookAndFeelDecorated(true);
	  	final JFrame f = new JFrame();
	    final Container c = f.getContentPane();
	    c.setLayout(new GridBagLayout());
	    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	    f.setSize(900, 700);
	    f.setLocationRelativeTo(null);
	    f.setTitle("Bianca's Telefonbuch");
	    Vector data = loadData();
	    final Model model = new Model(data);
	    final JTable table = new JTable(model);
	    table.setRowHeight(20);
	    table.setDefaultRenderer(Adresse.class, new ComboRenderer(model));
	    table.setDefaultRenderer(String.class, new Renderer(model));
	    
	    table.setDefaultEditor(Adresse.class, new ComboEditor(model));
	    
	    table.setSelectionBackground(Color.BLUE);
	    JMenuBar bar = new JMenuBar();
	    JMenu menu = new JMenu("Datei");
	    JMenuItem about = new JMenuItem("Über...");
	    JMenuItem contact = new JMenuItem("Kontakt hinzufügen");
	    JMenuItem contact2 = new JMenuItem("Kontakt löschen");
	    JMenuItem save = new JMenuItem("Speichern");
	    JMenuItem exit = new JMenuItem("Beenden");
	    about.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e) {
	    		
	    	}
	    });
	    contact.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e) {
	    		createDialog(f, model, false);
	    	}
	    });
	    contact2.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e) {
	    		model.delete(table);
	    	}
	    });
	    save.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e) {
	    		model.save();
	    	}
	    });
	    exit.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent e) {
	    		System.exit(0);
	    	}
	    });
	    menu.add(about);
	    menu.add(contact);
	    menu.add(contact2);
	    menu.add(save);
	    menu.addSeparator();
	    menu.add(exit);
	    bar.add(menu);
	    f.setJMenuBar(bar);
	    
	    
	    
	    
	    JButton button1 = new JButton("Speichern");
	    button1.addActionListener(new ActionListener(){
	    	public void actionPerformed(ActionEvent ae) {
	    		model.save();
	    	}
	    });
	    	    
	    JButton button2 = new JButton("Kontakt hinzufügen");
	    button2.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent ae) {
	    		createDialog(f, model, false);
	    	}
	    });
	    JButton button3 = new JButton("Kontakt löschen");
	    button3.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent ae) {
	    		model.delete(table);
	    	}
	    });
	    JButton button4 = new JButton("Kontakt bearbeiten");
	    button4.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent ae) {
	    		createDialog(f, model, true);
	    	}
	    });
	    
	    c.add(new JScrollPane(table), new GridBagConstraints(0, 0, 4, 1, 1, 10, GridBagConstraints.NORTH,
	    		       GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
	    c.add(button1, new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.WEST,
   		               GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
	    c.add(button4, new GridBagConstraints(1, 1, 1, 1, 2, 0, GridBagConstraints.EAST,
	               GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
	    c.add(button3, new GridBagConstraints(2, 1, 1, 1, 0, 0, GridBagConstraints.EAST,
   		               GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
	    c.add(button2, new GridBagConstraints(3, 1, 1, 1, 0, 0, GridBagConstraints.EAST,
	               GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
	    
	    
	    f.setVisible(true);
	}
	
	public static void createDialog(JFrame f, final Model model, boolean changed) {
		
		JDialog.setDefaultLookAndFeelDecorated(true);
		final JDialog dialog = new JDialog();
		Container p = dialog.getContentPane();
		p.setLayout(new GridBagLayout());
		JPanel c = new JPanel();
		JPanel q = new JPanel();
		q.setLayout(new FlowLayout(FlowLayout.CENTER));
		c.setLayout(new GridBagLayout());
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		dialog.setLocation((d.width - 600) / 2, (d.height - 200) / 2);
		dialog.setModal(true);
		dialog.setSize(600, 300);
		JButton button1 = new JButton("    OK     ");
		JButton button2 = new JButton("Abbrechen");
		
		JPanel vor = new JPanel();
		JLabel vor1 = new JLabel("Vorname");
		final JTextField vor2 = new JTextField();
		vor.setLayout(new GridLayout(2, 1));
		vor.add(vor1);
		vor.add(vor2);
		
		JPanel nach = new JPanel();
		JLabel nach1 = new JLabel("Nachname");
		final JTextField nach2 = new JTextField();
		nach.setLayout(new GridLayout(2, 1));
		nach.add(nach1);
		nach.add(nach2);
		
		JPanel nick = new JPanel();
		JLabel nick1 = new JLabel("Nickname");
		final JTextField nick2 = new JTextField();
		nick.setLayout(new GridLayout(2, 1));
		nick.add(nick1);
		nick.add(nick2);
		
		JPanel tel = new JPanel();
		JLabel tel1 = new JLabel("Telefon");
		final JTextField tel2 = new JTextField();
		tel.setLayout(new GridLayout(2, 1));
	    tel.add(tel1);
		tel.add(tel2);
		
		JPanel han = new JPanel();
		JLabel han1 = new JLabel("Handy");
		final JTextField han2 = new JTextField();
		han.setLayout(new GridLayout(2, 1));
		han.add(han1);
		han.add(han2);
		
		JPanel em = new JPanel();
		JLabel em1 = new JLabel("Email");
		final JTextField em2 = new JTextField();
		em.setLayout(new GridLayout(2, 1));
		em.add(em1);
		em.add(em2);
		
		JPanel ema = new JPanel();
		JLabel ema1 = new JLabel("Email2");
		final JTextField ema2 = new JTextField();
		ema.setLayout(new GridLayout(2, 1));
		ema.add(ema1);
		ema.add(ema2);
		
		JPanel ad = new JPanel();
		JLabel ad1 = new JLabel("Strasse");
		final JTextField ad2 = new JTextField();
		ad.setLayout(new GridLayout(2, 1));
		ad.add(ad1);
		ad.add(ad2);
		
		JPanel ad_ = new JPanel();
		JLabel ad_1 = new JLabel("Wohnort");
		final JTextField ad_2 = new JTextField();
		ad_.setLayout(new GridLayout(2, 1));
		ad_.add(ad_1);
		ad_.add(ad_2);
		
		JPanel ad__ = new JPanel();
		JLabel ad__1 = new JLabel("Staat");
		final JTextField ad__2 = new JTextField();
		ad__.setLayout(new GridLayout(2, 1));
		ad__.add(ad__1);
		ad__.add(ad__2);
		
		
		JPanel geb = new JPanel();
		JLabel geb1 = new JLabel("Geburtsdatum");
		final JTextField geb2 = new JTextField();
		geb.setLayout(new GridLayout(2, 1));
		geb.add(geb1);
		geb.add(geb2);
		
				
		c.add(vor, new GridBagConstraints(0, 0, 1, 1, 5, 0, GridBagConstraints.CENTER,
 		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(nach, new GridBagConstraints(1, 0, 1, 1, 5, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(nick, new GridBagConstraints(2, 0, 1, 1, 5, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(tel, new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(han, new GridBagConstraints(1, 1, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(em, new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(ema, new GridBagConstraints(1, 2, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(ad, new GridBagConstraints(0, 3, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(ad_, new GridBagConstraints(1, 3, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(ad__, new GridBagConstraints(2, 3, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		c.add(geb, new GridBagConstraints(0, 4, 1, 1, 0, 0, GridBagConstraints.CENTER,
		           GridBagConstraints.BOTH, new Insets(0, 10, 0, 10), 0, 0));
		
		
		q.add(button1);
		q.add(button2);
		
		button1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				Kontakt k = new Kontakt( vor2.getText(),
										 nach2.getText(),
										 nick2.getText(),
										 tel2.getText(),
										 han2.getText(),
										 em2.getText(),
										 ema2.getText(),
										 geb2.getText());
				Adresse a = new Adresse(ad2.getText(), ad_2.getText(), ad__2.getText());
				model.addItem(new Node(k, a));
				dialog.dispose();
			}
	    });
		
		button2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				dialog.dispose();
			}
	    });
		p.add(c, new GridBagConstraints(0, 0, 1, 1, 3, 3, GridBagConstraints.NORTH,
		           GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
		p.add(q, new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.PAGE_END,
		           GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
		dialog.setVisible(true);
	}
	
	public static Vector loadData() {
		Vector data = null;
				
		try { 
			FileInputStream fi = new FileInputStream("daten.dat");
			ObjectInputStream ois = new ObjectInputStream(fi);
        	data = (Vector) ois.readObject();
        	ois.close();
        }
        catch (FileNotFoundException e) {
        	data = new Vector();
        	//data.add(new Kontakt( "", "", "Herzlich Willkommen", "",
        										//"", "", "", ""));
        }
        catch (Exception e) {
        	JOptionPane.showMessageDialog( null, "Fehler beim Laden der Daten" );
        	System.exit(0);
        }
        return data;
	}
}

class Model implements TableModel {
	   	  
	private Vector contacts;
	private Vector listeners = new Vector();
	
		
	      public Model(Vector data){
	      	 contacts = data;
	      }
	      
	      public Vector getContacts() {
	      	return contacts;
	      }
	      
	      public void delete(JTable table) {
	      	int index = table.getSelectedRow();
	      	if (index != -1) contacts.removeElementAt(index);
	      	TableModelEvent e = new TableModelEvent( this, index, index,
		            TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE );
		        
		    for( int i = 0, n = listeners.size(); i<n; i++ ) {
		        ((TableModelListener)listeners.get( i )).tableChanged( e );
		    }
	      }
	      
	      public void save() {
	      	 FileOutputStream fo;
	      	 try {
	      	 	fo = new FileOutputStream("daten.dat");
	      	 	ObjectOutputStream oos = new ObjectOutputStream(fo);
	      	 	oos.writeObject(contacts);
	      	 	oos.flush();
	      	 	oos.close();
	      	 } 
	      	 catch (Exception e) {
	      	 	JOptionPane.showMessageDialog( null, "Fehler beim Speichern der Daten" );
	        	System.exit(0);
	      	 }
	      	 
	      }
	      
	      public void addItem(Node k) {
	         int index = contacts.size();
	         contacts.add(k);
	         TableModelEvent e = new TableModelEvent( this, index, index,
	            TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT );
	        
	         for( int i = 0, n = listeners.size(); i<n; i++ ) {
	            ((TableModelListener)listeners.get( i )).tableChanged( e );
	         }
	      }
	      
	      public int getColumnCount() {
	         return 7;
	      }
	   
	      public int getRowCount() {
	         return contacts.size();
	      }
	   
	      public String getColumnName(int column) {
	         switch(column) {
	         	case 0: return "Nickname";
	         	case 1: return "Telefon";
	         	case 2: return "Handy";
	         	case 3: return "Email";
	         	case 4: return "Email2";
	         	case 5: return "Adresse";
	         	case 6: return "Geburtstag";
	         	default: return null;
	         }
	      }
	   
	      public Object getValueAt(int rowIndex, int columnIndex) {
	        Kontakt k = ((Node) contacts.get(rowIndex)).getContact();  
	        switch (columnIndex) {
		        case 0: return k.nick;
	         	case 1: return k.telefon;
	         	case 2: return k.handy;
	         	case 3: return k.email;
	         	case 4: return k.email2;
	         	
	         	case 6: return k.geb;
	         	default: return null;
	        }
	      	
	      }

	      public Class getColumnClass(int columnIndex) {
	        if (columnIndex == 5) return Adresse.class;
	        else return String.class;
	      }
	      
	      public void addTableModelListener(TableModelListener l) {
	        listeners.add(l);
	      }
	      public void removeTableModelListener(TableModelListener l) {
	        listeners.remove(l);
	      }
	     
	      public boolean isCellEditable(int rowIndex, int columnIndex) {
	        return true;
	      }
	      
	      public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
	        Kontakt k = ((Node) contacts.get(rowIndex)).getContact();
	        switch(columnIndex) {
		        case 0: 
		        	k.nick = (String) aValue; 
		        	break;
	         	case 1: 
	         		k.telefon = (String) aValue; 
	         		break;
	         	case 2: 
	         		k.handy = (String) aValue; 
	         		break;
	         	case 3: 
	         		k.email = (String) aValue; 
	         		break;
	         	case 4: 
	         		k.email2 = (String) aValue;
	         		break;
	         	case 6: 
	         		k.geb = (String) aValue;
	         		break;
         	}
	      } 
	}

class Renderer implements TableCellRenderer {
	   Model model;
	   
	   public Renderer(Model m){
	      model = m;
	   }
	   
	   public Component getTableCellRendererComponent(JTable table, Object value,
	         boolean isSelected, boolean hasFocus, int row, int column) {
	   	  
	   	  JLabel l = new JLabel();
	   	  l.setText(value.toString());
	   	  if (isSelected) l.setBackground(Color.GREEN);
	   	  if (column == 0) {
	   	  	String vor = ( (Node) model.getContacts().get(row)).getContact().vorname;
	   	  	String nach = ( (Node) model.getContacts().get(row)).getContact().name;
	   	  	l.setToolTipText(vor + " " + nach);
	   	  }
	      
	      return l;
	   }
	}

class ComboRenderer implements TableCellRenderer {
	Model model;
	   
	   public ComboRenderer(Model m){
	      model = m;
	   }
	
	
	public Component getTableCellRendererComponent(JTable table, Object value,
	         boolean isSelected, boolean hasFocus, int row, int column) {
	   	  
		  JComboBox l = new JComboBox();
		  l.setEditable(true);
		  if (isSelected) l.setBackground(Color.GREEN);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().strasse);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().ort);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().staat);
	      
	      return l;
	   }
} 

class ComboEditor implements TableCellEditor {
	   private Model model;
	   
	   private Vector listeners = new Vector();
	   
	   
	   public ComboEditor(Model m){
	      model = m;
	   }
	   
	   public void addCellEditorListener(CellEditorListener l) {
	      listeners.add( l );
	   }
	   
	   
	   public void removeCellEditorListener(CellEditorListener l) {
	      listeners.remove( l );
	   }
	   
	   
	   public Object getCellEditorValue() {
	      return this;
	   }
	   
	   
	   public Component getTableCellEditorComponent(JTable table, Object value,
	         boolean isSelected, int row, int column) {
	      
	   	  JComboBox l = new JComboBox();
		  l.setEditable(true);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().strasse);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().ort);
		  l.addItem(((Node)model.getContacts().get(row)).getAdress().staat);
	      
	      return l;
	   }
	   
	   
	   public boolean isCellEditable(EventObject anEvent) {
	      return true;
	   }
	   
	   
	   public boolean shouldSelectCell(EventObject anEvent) {
	      return true;
	   }
	   
	   
	   public void cancelCellEditing() {
	      fireEditingCanceld();
	   }
	   
	   
	   public boolean stopCellEditing() {
	      fireEditingStopped();
	      return true;
	   }
	   
	   
	   protected void fireEditingCanceld(){
	      ChangeEvent e = new ChangeEvent( this );
	      for( int i = 0, n = listeners.size(); i<n; i++ )
	         ((CellEditorListener)listeners.get( i )).editingCanceled( e );
	   }
	   
	   
	   protected void fireEditingStopped(){
	      ChangeEvent e = new ChangeEvent( this );
	      for( int i = 0, n = listeners.size(); i<n; i++ )
	         ((CellEditorListener)listeners.get( i )).editingStopped( e );
	   }
	}


Edit von L-ectron-X: Bitte Aussage kräftige Titel verwenden! Kein Mensch kann die Frage zuordnen wenn da steht: "Trau mich gar nicht zu fragen..."
 
B

Beni

Gast
Das liegt daran, dass JLabels von Haus aus durchsichtig sind. Du kannst das so abändern:

Code:
      public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
      
           JLabel l = new JLabel();
           l.setText(value.toString());
           
           l.setOpaque( true );  // auf undurchsichtig stellen
           if (isSelected) 
             l.setBackground(Color.GREEN);
           else
           	l.setBackground( table.getBackground() );

P.S. Hab ich gerade noch in die FAQ aufgenommen :wink:
Wichtige Bemerkung
Man sollte niemals einen Code schreiben, der so aussieht:
Code:
public class Renderer implements TableCellRenderer {

	[...]

	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      
		JLabel label = new JLabel();  // FALSCH

		[...]

		return label;
	}
}

Wieso nicht? Weil man immer wieder dieselbe Component verwenden kann. Denn das JTable ruft die getTableCellRendererComponent-Methode auf, und ruft gleich anschliessend den paint-Befehl der erhaltenen Component auf. Erst danach wird die "nächste" Component geholt.

Es ist wie das Tragen von Wasser: entweder läuft man mit einem Eimer zum Fluss, wieder zurück und wirft denn Eimer dann fort (weil er ja gebraucht ist), kauft sich dann einen neuen; oder man läuft mit demselben Eimer zurück zum Fluss. Ziemlich offensichtlich, dass die zweite Variante die bessere ist.
 

Isaac

Bekanntes Mitglied
Code:
Wieso nicht? Weil man immer wieder dieselbe Component verwenden kann. Denn das JTable ruft die getTableCellRendererComponent-Methode auf, und ruft gleich anschliessend den paint-Befehl der erhaltenen Component auf. Erst danach wird die "nächste" Component geholt. 

Es ist wie das Tragen von Wasser: entweder läuft man mit einem Eimer zum Fluss, wieder zurück und wirft denn Eimer dann fort (weil er ja gebraucht ist), kauft sich dann einen neuen; oder man läuft mit demselben Eimer zurück zum Fluss. Ziemlich offensichtlich, dass die zweite Variante die bessere ist.


Ich hatte mal nen Problem mit einer JScrollPane, ich habe auf Knopfdruck die Komponenten im JFrame neu positioniert und wollte sie, ebenfalls auf Knopfdruck, wieder so haben wie vorher. Die JScrollPane konnte ich aber nicht wieder benutzen, die Scrollbalken wurden nie angezeigt. Erst als ich an dieser Stelle ein new JScrollpane eingefügt habe ging es. Leider habe ich den Code nicht mehr. Der Fehler lag sicher zwischen den Ohren aber trotzdem verhielt sich die ScrollPane nicht wie erwartet.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Jtable farbig markieren - Verständnis Problem AWT, Swing, JavaFX & SWT 5
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
I JTable,AbstractTableModel Problem AWT, Swing, JavaFX & SWT 3
K Swing JTable Problem... AWT, Swing, JavaFX & SWT 3
J JTable: Problem bei CellRenderer AWT, Swing, JavaFX & SWT 3
W jTable Scrollbar Problem AWT, Swing, JavaFX & SWT 2
GianaSisters Swing jTable Undo Problem. AWT, Swing, JavaFX & SWT 5
J Swing Problem mit JTable erweitern AWT, Swing, JavaFX & SWT 6
Draculajr Problem mit jformattedtextfields und jtable AWT, Swing, JavaFX & SWT 10
B Swing JTable custom ColumnModel Problem AWT, Swing, JavaFX & SWT 5
T JSpinner in JTable: Problem beim Auslesen, funktioniert erst beim Zellwechsel AWT, Swing, JavaFX & SWT 7
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
B Problem mit Alignment in JTable AWT, Swing, JavaFX & SWT 2
N Swing JTable - Problem mit Zeilenumbruch AWT, Swing, JavaFX & SWT 6
F Swing Problem mit Drag&Drop in JTable AWT, Swing, JavaFX & SWT 4
D Swing JTable Model View Problem AWT, Swing, JavaFX & SWT 6
D Swing JTable Problem bei automatischem update von Zellen AWT, Swing, JavaFX & SWT 3
F Swing JTable: Problem beim zeile löschen AWT, Swing, JavaFX & SWT 3
C Swing Problem mit MouseEvent in JTable AWT, Swing, JavaFX & SWT 5
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
aze JTable in Popup.Problem mit DefaultTableCellRenderer AWT, Swing, JavaFX & SWT 9
N Swing Problem beim Einlesen von Jtable in Array AWT, Swing, JavaFX & SWT 5
M Problem mit funktionellem JTable Header AWT, Swing, JavaFX & SWT 5
M Problem mit Festsetzen der Anzahl ein reihen in einer JTable AWT, Swing, JavaFX & SWT 11
S JTable & TableCellEditor Problem AWT, Swing, JavaFX & SWT 5
M JTable und ListSelectionListener Problem AWT, Swing, JavaFX & SWT 3
S Sortierter JTable Problem AWT, Swing, JavaFX & SWT 2
K Problem mit JButton in JTable AWT, Swing, JavaFX & SWT 4
M JTable & Problem, das nicht die komplette Zeile gefärbt AWT, Swing, JavaFX & SWT 6
B Anspruchsvolles JTable Problem AWT, Swing, JavaFX & SWT 4
W Problem mit JTable und fireTableDataChanged() AWT, Swing, JavaFX & SWT 13
M Layout-Problem: JTable AWT, Swing, JavaFX & SWT 3
S JTable - Problem mit der Selection AWT, Swing, JavaFX & SWT 4
G Darstellungs Problem mit ComboBox in JTable AWT, Swing, JavaFX & SWT 15
G Problem bei JTable in JInternalFrame AWT, Swing, JavaFX & SWT 4
H JTable problem mit TableSorter AWT, Swing, JavaFX & SWT 4
M JDBC + dynamischer JTable - Spalten problem AWT, Swing, JavaFX & SWT 5
S JTable Problem AWT, Swing, JavaFX & SWT 2
E JTable: Problem mit clearSelection() AWT, Swing, JavaFX & SWT 7
R JTable auslesen Problem AWT, Swing, JavaFX & SWT 4
D GridBagLayout Problem mit JTable AWT, Swing, JavaFX & SWT 6
M Problem mit ImageIcon in einer JTable AWT, Swing, JavaFX & SWT 2
G JTable - Problem.:( AWT, Swing, JavaFX & SWT 6
Z Problem mit Icons in JTable AWT, Swing, JavaFX & SWT 3
M Problem mit JTable und DefaultTableModel AWT, Swing, JavaFX & SWT 2
G Problem mit JTable / mit dem Eintragen der Daten aus Vector AWT, Swing, JavaFX & SWT 4
S JTable + Sortieren => Problem bei Darstellung AWT, Swing, JavaFX & SWT 13
TRunKX Problem mit JTable AWT, Swing, JavaFX & SWT 3
J jtable + Textarea problem AWT, Swing, JavaFX & SWT 3
M Problem bei Verbinden v. jTable, ScrollPane u. JLabel AWT, Swing, JavaFX & SWT 5
G Problem mit Scrollpanel in JTable AWT, Swing, JavaFX & SWT 2
T Problem mit JTable - Renderer AWT, Swing, JavaFX & SWT 3
W Problem/Absturz bei Zelle nicht editierbar setzen (JTable) AWT, Swing, JavaFX & SWT 6
M JTable Problem AWT, Swing, JavaFX & SWT 9
EagleEye Problem mit ObjectOutputStream / JTable AWT, Swing, JavaFX & SWT 5
G JTable CellRenderer-Problem AWT, Swing, JavaFX & SWT 4
I Swing JTable zeichnet kein vertical Grid AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben