Class übergreifend JPanel aktualisieren

MRS

Mitglied
Hallo zusammen.
Ich habe mir auf die dauer nen schönen Quelltext zusammen geklaut und umgebastelt, nur glaube ich das ich den Überblick verloren habe :-(
Ich würde gerne beim klick auf den Buttons in der Tabelle die TextArea aktualisieren,
aber nach 2 Tagen hab ich das jetzt aufgegeben wie das gehen soll.
Ausserdem soll der Panel nacher in einem anderem Frame dargestellt werden neben anderen Panels. Ich weis nicht ob das wichtig ist.

Gedanken habe ich dazu ohne Ende, nur fehlt mir wohl noch ein wenig das KnowHow. :(

Wäre nett wenn mir wer helfen könnte.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class Buttontabelle extends JPanel
{
	private static final long serialVersionUID = 1L;
	private boolean DEBUG = false;
	String ausgabe = "Test";
	
	Buttontabelle()
	{
		super(new GridLayout(1,0));
//		post("Test geht");
//	}
//	
//	public Component post(String ausgabe)
//    {
		JTable table = new JTable(new MyTableModel());
		JTextArea textArea = new JTextArea();
		textArea.setEditable(false);
		textArea.append(ausgabe);		
        initColumnSizes(table);
        JScrollPane scrollPane1 = new JScrollPane( table );
        JScrollPane scrollPane2 = new JScrollPane( textArea );
        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,scrollPane1 ,scrollPane2 );
        add(splitPane);
        new ButtonColumn(table, 4);
	//	return splitPane;
    }
	
	private void initColumnSizes(JTable table) 
    {
        MyTableModel model = (MyTableModel)table.getModel();
        TableColumn column = null;
        Component comp = null;
        int headerWidth = 0;
        int cellWidth = 0;
        Object[] longValues = model.longValues;
        TableCellRenderer headerRenderer = table.getTableHeader().getDefaultRenderer();

        for (int i = 0; i < 5; i++) 
        {
            column = table.getColumnModel().getColumn(i);
            comp = headerRenderer.getTableCellRendererComponent(null, column.getHeaderValue(),false, false, 0, 0);
            headerWidth = comp.getPreferredSize().width;
            comp = table.getDefaultRenderer(model.getColumnClass(i)).getTableCellRendererComponent(table, longValues[i],false, false, 0, i);
            cellWidth = comp.getPreferredSize().width;

            if (DEBUG) 
            {
                System.out.println("Initializing width of column"+i+". headerWidth = "+headerWidth+"; cellWidth = "+cellWidth);
            }
            column.setPreferredWidth(Math.max(headerWidth, cellWidth));
        }
    }
 
    class MyTableModel extends AbstractTableModel 
    {
		private static final long serialVersionUID = 1L;

		Object[][] data = {{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"},{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"},{"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"}};
	    String[] columnNames = {"Vor","Nach","Sonstiges","Datum","Sehen"};

	    public final Object[] longValues = {"Sonja", "Opologisch","Rumstehen","Sat May 13 09:27:46 CEST 2006","Sehen"};
	    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();
	    }

	    public boolean isCellEditable(int row, int col) 
	    {
	    	if (col < 4) 
	    	{
	    		return false;
	    	} 
	    	else 
	    	{
	    		return true;
	    	}
	    }
	    
	    public void setValueAt(Object value, int row, int col) 
	    {
	    	if (DEBUG) 
	    	{
	    		System.out.println("Setting value at "+row+","+col+" to "+value+" (an instance of "+value.getClass()+")");
	    	}

	    	data[row][col] = value;
	    	fireTableCellUpdated(row, col);

	    	if (DEBUG) 
	    	{
	    		System.out.println("New value of data:");
	    		printDebugData();
	    	}
	    }

	    private void printDebugData() 
	    {
	    	int numRows = getRowCount();
	    	int numCols = getColumnCount();
	    	
	    	for (int i=0; i < numRows; i++) 
	    	{
	    		System.out.print("    row " + i + ":");
	    		for (int j=0; j < numCols; j++) 
	    		{
	    			System.out.print("  " + data[i][j]);
	    		}
	    		System.out.println();
	    	}
	    	System.out.println("--------------------------");
	    }
    }

 
    class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener
    {
		private static final long serialVersionUID = 1L;
		JTable table;
        JButton renderButton;
        JButton editButton;
        String text;
 
        public ButtonColumn(JTable table, int column)
        {
            super();
            this.table = table;
            renderButton = new JButton();
            editButton = new JButton();
            editButton.setFocusPainted( false );
            editButton.addActionListener( this );
 
            TableColumnModel columnModel = table.getColumnModel();
            columnModel.getColumn(column).setCellRenderer( this );
            columnModel.getColumn(column).setCellEditor( this );
        }
 
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
        {
            if (hasFocus)
            {
                renderButton.setForeground(table.getForeground());
                renderButton.setBackground(UIManager.getColor("Button.background"));
            }
            else if (isSelected)
            {
            	renderButton.setForeground(table.getSelectionForeground());
            	renderButton.setBackground(table.getSelectionBackground());
            }
            else
            {
            	renderButton.setForeground(table.getForeground());
            	renderButton.setBackground(UIManager.getColor("Button.background"));
            }
           	renderButton.setText( (value == null) ? "" : value.toString() );
           	return renderButton;
        }
 
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
        {
            text = (value == null) ? "" : value.toString();
            editButton.setText( text );
            return editButton;
        }
 
        public Object getCellEditorValue()
        {
            return text;
        }
 
        public void actionPerformed(ActionEvent e)
        {
            fireEditingStopped();
            System.out.println(e.getActionCommand() + " : " + table.getSelectedRow());
            ausgabe=(e.getActionCommand() + " : " + table.getSelectedRow());
        }
    }
	public static void main(String[] args) 
	{ 
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Testfenster");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Buttontabelle newContentPane = new Buttontabelle();
        newContentPane.setOpaque(true);
        frame.setContentPane(newContentPane);
        frame.pack();
        frame.setVisible(true);
	}
}
 
Zuletzt bearbeitet:
Hallo Marco,

also der Aufbau des Codes hat mir nicht sehr gefallen. Du möchtest den Text der JTextArea verändern können. Er ist aber außerhalb der Methode post nicht erreichbar. Du hast auch keine Getter, Setter definiert um die JTextArea zu erreichen.

Java:
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.table.*;

public class Buttontabelle extends JPanel {
	private static final long serialVersionUID = 1L;

	private boolean DEBUG = false;
	
	String ausgabe = "Test";

// Geändert //
	private JTextArea tArea;
//
	
	Buttontabelle() {
		super(new GridLayout(1, 0));
		post("Test geht");
	}

	public Component post(String ausgabe) {
		JTable table = new JTable(new MyTableModel());
		JTextArea textArea = new JTextArea();
// Geändert //
		tArea = textArea;
//
		textArea.setEditable(false);
		textArea.append(ausgabe);
		initColumnSizes(table);
		JScrollPane scrollPane1 = new JScrollPane(table);
		JScrollPane scrollPane2 = new JScrollPane(textArea);
		JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
				scrollPane1, scrollPane2);
		add(splitPane);
		new ButtonColumn(table, 4);
		return splitPane;
	}

	private void initColumnSizes(JTable table) {
		MyTableModel model = (MyTableModel) table.getModel();
		TableColumn column = null;
		Component comp = null;
		int headerWidth = 0;
		int cellWidth = 0;
		Object[] longValues = model.longValues;
		TableCellRenderer headerRenderer = table.getTableHeader()
				.getDefaultRenderer();

		for (int i = 0; i < 5; i++) {
			column = table.getColumnModel().getColumn(i);
			comp = headerRenderer.getTableCellRendererComponent(null, column
					.getHeaderValue(), false, false, 0, 0);
			headerWidth = comp.getPreferredSize().width;
			comp = table.getDefaultRenderer(model.getColumnClass(i))
					.getTableCellRendererComponent(table, longValues[i], false,
							false, 0, i);
			cellWidth = comp.getPreferredSize().width;

			if (DEBUG) {
				System.out.println("Initializing width of column" + i
						+ ". headerWidth = " + headerWidth + "; cellWidth = "
						+ cellWidth);
			}
			column.setPreferredWidth(Math.max(headerWidth, cellWidth));
		}
	}

	class MyTableModel extends AbstractTableModel {
		private static final long serialVersionUID = 1L;

		Object[][] data = {
				{ "Sonja", "Opologisch", "Rumstehen",
						"Sat May 13 09:27:46 CEST 2006", "Sehen" },
				{ "Sonja", "Opologisch", "Rumstehen",
						"Sat May 13 09:27:46 CEST 2006", "Sehen" },
				{ "Sonja", "Opologisch", "Rumstehen",
						"Sat May 13 09:27:46 CEST 2006", "Sehen" } };

		String[] columnNames = { "Vor", "Nach", "Sonstiges", "Datum", "Sehen" };

		public final Object[] longValues = { "Sonja", "Opologisch",
				"Rumstehen", "Sat May 13 09:27:46 CEST 2006", "Sehen" };

		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();
		}

		public boolean isCellEditable(int row, int col) {
			if (col < 4) {
				return false;
			} else {
				return true;
			}
		}

		public void setValueAt(Object value, int row, int col) {
			if (DEBUG) {
				System.out.println("Setting value at " + row + "," + col
						+ " to " + value + " (an instance of "
						+ value.getClass() + ")");
			}

			data[row][col] = value;
			fireTableCellUpdated(row, col);

			if (DEBUG) {
				System.out.println("New value of data:");
				printDebugData();
			}
		}

		private void printDebugData() {
			int numRows = getRowCount();
			int numCols = getColumnCount();

			for (int i = 0; i < numRows; i++) {
				System.out.print("    row " + i + ":");
				for (int j = 0; j < numCols; j++) {
					System.out.print("  " + data[i][j]);
				}
				System.out.println();
			}
			System.out.println("--------------------------");
		}
	}

	class ButtonColumn extends AbstractCellEditor implements TableCellRenderer,
			TableCellEditor, ActionListener {
		private static final long serialVersionUID = 1L;

		JTable table;

		JButton renderButton;

		JButton editButton;

		String text;

		public ButtonColumn(JTable table, int column) {
			super();
			this.table = table;
			renderButton = new JButton();
			editButton = new JButton();
			editButton.setFocusPainted(false);
			editButton.addActionListener(this);

			TableColumnModel columnModel = table.getColumnModel();
			columnModel.getColumn(column).setCellRenderer(this);
			columnModel.getColumn(column).setCellEditor(this);
		}

		public Component getTableCellRendererComponent(JTable table,
				Object value, boolean isSelected, boolean hasFocus, int row,
				int column) {
			if (hasFocus) {
				renderButton.setForeground(table.getForeground());
				renderButton.setBackground(UIManager
						.getColor("Button.background"));
			} else if (isSelected) {
				renderButton.setForeground(table.getSelectionForeground());
				renderButton.setBackground(table.getSelectionBackground());
			} else {
				renderButton.setForeground(table.getForeground());
				renderButton.setBackground(UIManager
						.getColor("Button.background"));
			}
			renderButton.setText((value == null) ? "" : value.toString());
			return renderButton;
		}

		public Component getTableCellEditorComponent(JTable table,
				Object value, boolean isSelected, int row, int column) {
			text = (value == null) ? "" : value.toString();
			editButton.setText(text);
			return editButton;
		}

		public Object getCellEditorValue() {
			return text;
		}

		public void actionPerformed(ActionEvent e) {
			fireEditingStopped();
			System.out.println(e.getActionCommand() + " : "
					+ table.getSelectedRow());
			ausgabe = (e.getActionCommand() + " : " + table.getSelectedRow());

// Geändert
			tArea.setText(ausgabe);
//

		}
	}

	public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		JFrame frame = new JFrame("Testfenster");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Buttontabelle newContentPane = new Buttontabelle();
		newContentPane.setOpaque(true);
		frame.setContentPane(newContentPane);
		frame.pack();
		frame.setVisible(true);
	}
}


Vg Erdal
 
Boar Erdal....
Kann ich bei dir anfangen!

Ich glaube nicht das du das in 30min raus hast (Inkl. Code einrücken) und ich 2 Tage daran gesessen habe ><.

Wie schon letztes mal kann ich nur sagen.
Vielen vielen Dank!
 
Hmmm... 2 - 3 Dinge noch.
Ich habe diesem Button in der Tabelle ne Löschen Funktion zugewiesen.
Die Daten werden auch von der Festplatte gelöscht, nur die Tabelle wird nicht Aktualisiert.

Genau das Gleich wenn ich Daten hin zu füge (Diese kommen jetzt über ein Array), die Tabelle wird wieder nicht Aktualisiert.


Obwohl die Daten im Array vorhanden und/oder von der Festplatte entfernt sind und der Panel von mir nen .dispose(); kriegt, dann wieder geöffnet wird kann ich die veränderung erst sehen wenn ich das ganze programm schließe. :(

Ich versuche mal mein Proggi in kurz hier zu posten und den überflüssigen bzw. funktionierenden teil weg zu lassen.

@Erdal... wenn du die Lösung wieder in 30min hast geb ich dir ein aus^^
 
Hier die Code Schnipsel!

Arbeitsplatz
Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;

public class Arbeitsplatz extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	private JButton progEndeBtn = new JButton("Beenden");
	private JButton postAusgangBtn = new JButton("Test");
	private JInternalFrame typenFenster = new JInternalFrame("Typ",false,false,false,false);
	private JInternalFrame unterFenster = new JInternalFrame("Übersicht",false,false,false,false);
	private JInternalFrame ausgangFenster = new JInternalFrame("Post Ausgang",false,false,false,false);
	
	public Arbeitsplatz() 
	{        
//----------------------------- Stammdaten des Fensters -------------------------------------
		super("Obertester");  
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		setSize(1024,734);         
		setResizable(false);
		setLayout(null);    
		getContentPane().setBackground(new Color(100, 200, 100)); 

		setJMenuBar(new Menubar().hauptMenuBar());
//--------------------------------- Obere Button Leiste -------------------------------------		
		postAusgangBtn.setBounds(200,15,140,50);
		add(postAusgangBtn);
		progEndeBtn.setBounds(840,15,130,50);
		add(progEndeBtn);
		
//---------------------------- Eingebautes Typen Fenster ---------------------------------
		typenFenster.getContentPane().setBackground(new Color(150, 150, 230));
		typenFenster.setVisible(true);
		typenFenster.setBounds(-3,95,160,588);
		typenFenster.add(new JScrollPane(new Daten().kontakte()));
		add(typenFenster);
		
//----------------------------- Eingebautes Unter Fenster -----------------------------------		
		unterFenster.getContentPane().setBackground(new Color(255, 255, 255));
		unterFenster.setVisible(true);
		unterFenster.setBounds(152,95,870,588);
		add(unterFenster);
		unterFenster.setLayout(null);

//----------------------------------- Button Aktivität --------------------------------------	
	    progEndeBtn.addActionListener(this); 
	    postAusgangBtn.addActionListener(this);
	}     
	
	public void actionPerformed(ActionEvent e) 
	{     
		if (e.getActionCommand().equals("Beenden")) 
		{            
			System.exit(0);  
		}     
		if (e.getActionCommand().equals("Test")) 
		{          
			ausgangFenster.getContentPane().setBackground(new Color(254, 254, 254));
			ausgangFenster.setVisible(true);;
			ausgangFenster.setBounds(-3,0,863,555);
			ausgangFenster.add(new Buttontabelle().post()); 
			unterFenster.add(ausgangFenster);
		}   
	}
//===================================================================================================

//===================================================================================================	
	public void showArbeitsflaeche() 
	{        
		setVisible(true); 
	}  
	public static void main(String[] args) 
	{          
			new Arbeitsplatz().showArbeitsflaeche();        
	}   
}


Buttontabelle
Java:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; 
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.table.TableCellEditor;

public class Buttontabelle extends JPanel
{  
	private static final long serialVersionUID = 1L;  
	private boolean DEBUG = false;       
	private String ausgabe;
	private JTextArea tArea;

	public Component post() 
	{        
		JTable table = new JTable(new MyTableModel()); 
		JTextArea textArea = new JTextArea();      
		tArea = textArea;     
		textArea.setEditable(false);      
		initColumnSizes(table);      
		JScrollPane scrollPane1 = new JScrollPane(table);  
		JScrollPane scrollPane2 = new JScrollPane(textArea);  
		JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
													scrollPane1, scrollPane2);      
		add(splitPane);
		new ButtonColumn(table, 0);
		new ButtonColumn(table, 4);  
		return splitPane;  
	}    
	
	private void initColumnSizes(JTable table)
	{       
	    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	    TableColumn col0 = table.getColumnModel().getColumn(0);
	    col0.setPreferredWidth(38);
	    TableColumn col1 = table.getColumnModel().getColumn(1);
	    col1.setPreferredWidth(220);
	    TableColumn col2 = table.getColumnModel().getColumn(2);
	    col2.setPreferredWidth(330);
	    TableColumn col3 = table.getColumnModel().getColumn(3);
	    col3.setPreferredWidth(197);
	    TableColumn col4 = table.getColumnModel().getColumn(4);
	    col4.setPreferredWidth(48);
 
	}    
	class MyTableModel extends AbstractTableModel 
	{      
		private static final long serialVersionUID = 1L;     
		Object[][] data = { 	// wird bei mir aus Datei ausgelesen
				{ "1", "Opologisch", "Rumstehen",
				"Sat May 13 09:27:46 CEST 2006", "Sehen" },
				{ "1", "Muki", "Training",
				"Sat May 13 09:27:46 CEST 2006", "Sehen" },
				{ "1", "von der Volga", "Angeln",
				"Sat May 13 09:27:46 CEST 2006", "Sehen" } };
		String[] columnNames = { "Vor", "Nach", "Sonstiges", "Datum", "Sehen" };
		    
	    public final Object[] longValues = {"Öffnen","platzhalten","platzhalten",
	    		"platzhalten","Löschen"};

        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();        
        }         
        public boolean isCellEditable(int row, int col) 
        {         
        	if (col > 0 && col < 4) 
        	{            
        		return false;  
        	} 
        	else
        	{       
        		return true;           
        	}       
        }        
        public void setValueAt(Object value, int row, int col)
        {            
        	if (DEBUG) 
        	{           
        		System.out.println("Setting value at " + row + "," + col
        				+ " to " + value + " (an instance of "
        				+ value.getClass() + ")");
        	}
        	data[row][col] = value; 
        	fireTableCellUpdated(row, col);
        	if (DEBUG) 
        	{        
        		System.out.println("New value of data:");  
        		printDebugData();           
        	}    
        }       
        private void printDebugData() 
        {           
        	int numRows = getRowCount();
        	int numCols = getColumnCount();
        	for (int i = 0; i < numRows; i++) 
        	{             
        		System.out.print("    row " + i + ":");
        		for (int j = 0; j < numCols; j++) 
        		{                  
        			System.out.print("  " + data[i][j]);    
        		}              
        		System.out.println();   
        	}       
        	System.out.println("--------------------------");    
        }   
	}     

	class ButtonColumn extends AbstractCellEditor implements TableCellRenderer,TableCellEditor, ActionListener 
	{        
		private static final long serialVersionUID = 1L; 
		JTable table;   
		JButton renderButton;     
		JButton editButton;      
		String text;       
		public ButtonColumn(JTable table, int column) 
		{        
			super();   
			this.table = table;    
			renderButton = new JButton();   
			editButton = new JButton();     
			editButton.setFocusPainted(false); 
			editButton.addActionListener(this);    
			TableColumnModel columnModel = table.getColumnModel();  
			columnModel.getColumn(column).setCellRenderer(this);   
			columnModel.getColumn(column).setCellEditor(this);    
		}        
		public Component getTableCellRendererComponent(JTable table,
				Object value, boolean isSelected, boolean hasFocus, int row,
				int column) 
		{          
			if (hasFocus) 
			{             
				renderButton.setForeground(table.getForeground()); 
				renderButton.setBackground(UIManager
						.getColor("Button.background"));
			} 
			else if (isSelected) 
			{              
				renderButton.setForeground(table.getSelectionForeground());   
				renderButton.setBackground(table.getSelectionBackground());  
			} 
			else 
			{      
				renderButton.setForeground(table.getForeground());     
				renderButton.setBackground(UIManager                
						.getColor("Button.background"));
			}          
			renderButton.setText((value == null) ? "" : value.toString());
			return renderButton;       
		} 
		public Component getTableCellEditorComponent(JTable table,
				Object value, boolean isSelected, int row, int column) 
		{         
			text = (value == null) ? "" : value.toString();    
			editButton.setText(text);            
			return editButton;      
		}      
		public Object getCellEditorValue() 
		{        
			return text; 
		}         
		public void actionPerformed(ActionEvent e) 
		{     
			
			fireEditingStopped();
			ausgabe = (e.getActionCommand());  
			if(ausgabe=="1")
			{
				tArea.setText(ausgabe);
			}
			else
			{
				// keine Ahnung wie ich eine Reihe löschen soll
			}		       
		}    
	}     
}

Daten
Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class Daten extends JFrame implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private	JTextField feldC = new JTextField();
	
	public void neuerKontakt()
	{
		JButton speiBtn = new JButton("Speichern");
	
		setTitle("Neuer Typ");        
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setSize(390,180);
		setResizable(false);
		setLayout(null);    
		getContentPane().setBackground(new Color(245, 245, 255));
		setVisible(true);

		//--------------------- Einsetzen der JFelder / JButtons ---------------------------		
		feldC.setBounds(150,50,200,20);
		add(feldC);
		speiBtn.setBounds(200,110,150,22);
		add(speiBtn);
	    speiBtn.addActionListener(this);
	}
//-----------------------------------Typen im Hauptprogramm-----------------------------------	
	
	public Component kontakte()
	{
		String[] output = {"A","B","C","D"};// Wird sonst aus Datei ausgelesen

		final JList liste = new JList(output);
 
		liste.addListSelectionListener(new ListSelectionListener() 
		{
			public void valueChanged(ListSelectionEvent e) 
			{
				if (!e.getValueIsAdjusting())
				{
					System.out.println(liste.getSelectedValue());
					System.out.println(liste.getLeadSelectionIndex()+1);
				}
			}
		});
		return liste ;
	}
	public void actionPerformed(ActionEvent e) 
	{        
		if (e.getActionCommand().equals("Speichern")) 
		{   
			// Neuer Typ wird hier auf Platte gespeichert.
			// Aber nicht angezeigt im Arbeitsplatz.
			dispose();
		}
	}
}

Menubar
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Menubar implements ActionListener 
{	
	public JMenuBar hauptMenuBar()
	{
	
//------------------------- Hauptprogramm Menübar --------------------------------------------
	    JMenuBar myMenu = new JMenuBar();

	    JMenu menu3 = new JMenu("Optionen");
	    	JMenuItem neuKont = new JMenuItem("Neuen Kontakt hinzufügen");
	    	neuKont.addActionListener(this);
		    menu3.add(neuKont); 
	    myMenu.add(menu3);
	    
	    return myMenu;
	}
	

//	------------------------ActionEvents---------------------------------------
	public void actionPerformed(ActionEvent e) 
	{        			
		if (e.getActionCommand().equals("Neuen Kontakt hinzufügen")) 
		{            
			new Daten().neuerKontakt();     
		} 
	}
}
 
Das Problem habe ich auch mit meinem Typen Fenster.

Ich hoffe es erschwert die Sache nicht zu sehr das ich den rest weglasse.
Da ich alle daten auf platte speicher und die direkt auslese.
 
Wenn ich auf Test drücke soll die Tabelle neu dargestellt (aktualisiert) werden.

Der rechte Button in der Tabelle soll löschen sein.
In diesem steht normalerweise der Pfad wo die Datei liegt.
Das Löschen der Datei geht ja, aber es wird nicht Aktualisiert im laufendem Program.
 
Hallo Marco,

versuchs mal mit:
Code:
MyTableModel mt = new MyTableModel();
JTable table = new JTable(mt);
mt.fireTableDataChanged();
mt.fireTableStructureChanged();
oder
Code:
JTable table = new JTable(new MyTableModel());
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.fireTableDataChanged();
dtm.fireTableStructureChanged();

auch könnten vielleicht repaint() oder updateUI() oder revalidate() helfen. Einfach mal probieren.


Vg Erdal
 
Zurück