ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
6109
6109
EMPFEHLEN
-
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.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
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); } }
Geändert von MRS (26.05.06 um 21:46 Uhr)
Ich kann zwar nicht alles, aber alles probieren!
-
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.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
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!Ich kann zwar nicht alles, aber alles probieren!
-
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
Ich kann zwar nicht alles, aber alles probieren!
-
Hier die Code Schnipsel!
Arbeitsplatz
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
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
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
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
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
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
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
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(); } } }
Ich kann zwar nicht alles, aber alles probieren!
-
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.Ich kann zwar nicht alles, aber alles probieren!
-
Ja und wo ist der Button ändern und der Button löschen?
-
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.Ich kann zwar nicht alles, aber alles probieren!
-
Hallo Marco,
versuchs mal mit:
oderCode :1 2 3 4
MyTableModel mt = new MyTableModel(); JTable table = new JTable(mt); mt.fireTableDataChanged(); mt.fireTableStructureChanged();
Code :1 2 3 4
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
-
Kriege es irgendwie nicht auf die Reihe ;_;
Ich kann zwar nicht alles, aber alles probieren!
-
Hallo Marco,
hier mal kleines Beispiel wie man Zeilen hinzufügen und löschen kann. Je nach wie das JTable aufgebaut wurde könnte die Lösung anders aussehen. Hab hier mal ein DefaultTableModel verwendet.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class TableUpdateExample extends JFrame implements ActionListener { private DefaultTableModel dtm = new DefaultTableModel(3,2); private JTable table = new JTable(dtm); private JPanel p = new JPanel(); private JTextField t1 = new JTextField(); private JTextField t2 = new JTextField(); private JButton b1 = new JButton("Füge neue Zeile ein"); private JButton b2 = new JButton("Lösche markierte Zeile"); public TableUpdateExample() { super("TableExample"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setAlwaysOnTop(true); this.setLocationByPlatform(true); p.setLayout(new GridLayout(3, 2)); p.add(new JLabel("Name:")); p.add(t1); p.add(new JLabel("Tel. Nr:")); p.add(t2); p.add(b1); p.add(b2); createTable(); this.add(p, BorderLayout.NORTH); this.add(new JScrollPane(table), BorderLayout.CENTER); this.pack(); this.setVisible(true); b1.addActionListener(this); b2.addActionListener(this); } public static void main(String[] args) { new TableUpdateExample(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) updateTable(); else deleteRow(); } public void updateTable() { if (t1.getText() != null && t1.getText().length() > 0 && t2.getText() != null && t2.getText().length() > 0) { dtm.addRow(new String[] { t1.getText(), t2.getText() }); dtm.fireTableDataChanged(); dtm.fireTableStructureChanged(); t1.setText(""); t2.setText(""); } } public void deleteRow() { if (table.getSelectedRow() != -1) { dtm.removeRow(table.getSelectedRow()); dtm.fireTableDataChanged(); dtm.fireTableStructureChanged(); } } public void createTable() { dtm.setValueAt("Hans",0,0); dtm.setValueAt("12345",0,1); dtm.setValueAt("Peter",1,0); dtm.setValueAt("67890",1,1); dtm.setValueAt("Klaus",2,0); dtm.setValueAt("10293",2,1); } }
Vg Erdal
-
Das hilft mir schon mal etwas weiter.
Muss ich mir aber erstmal noch genauer anschauen.
Dank dir!
Ich kann zwar nicht alles, aber alles probieren!
-
Funktioniert leider nicht so wie ich es gerne hätte ;_;
Gibt es denn keine lösung das die Tabelle einfach komplet gelöscht wird und bei drücken des Buttons wieder komplet neu eingelesen wird?Ich kann zwar nicht alles, aber alles probieren!
-
Hallo Marco,
schau mal hier:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class TableRefreshExample extends JFrame implements ActionListener { private JTable table = new JTable(); private JButton b = new JButton("Refresh Table"); public TableRefreshExample() { super("TableExample"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setAlwaysOnTop(true); this.setLocationByPlatform(true); refreshTable(); this.add(b, BorderLayout.SOUTH); this.add(new JScrollPane(table), BorderLayout.CENTER); this.pack(); this.setVisible(true); b.addActionListener(this); } public static void main(String[] args) { new TableRefreshExample(); } public void actionPerformed(ActionEvent e) { refreshTable(); } public void refreshTable() { DefaultTableModel dtm = new DefaultTableModel(0, 2); Scanner scan = null; try { scan = new Scanner(new File("telregister.txt")); } catch (FileNotFoundException e) { e.printStackTrace(); } String temp = ""; String name = ""; String tel = ""; while (scan.hasNextLine()) { temp = scan.nextLine(); name = temp.substring(0, temp.indexOf("/")); tel = temp.substring(temp.indexOf("/") + 1, temp.length()); dtm.addRow(new String[] { name, tel }); } scan.close(); dtm.fireTableDataChanged(); dtm.fireTableStructureChanged(); table.setModel(dtm); table.updateUI(); } }
telregister.txt
Code :1 2 3 4
Hans/12345 Peter/98765 Klaus/45678 Marco/67895
Vg Erdal
-
Hallo Marco,
mein letzter Vorschlag wäre folgendes:
da du ein eigenes Model verwendest, in welchem die Daten angefordert und eingelesen werden. Müsste es zum aktualisieren der Tabelle, d.h. neueinlesen der Daten aus einer Datei und anzeigen, reichen ein neues Model zu erzeugen und diese der Tabelle zu übergeben. Somit wären die alten Daten verworfen, und die neuen Daten eingelesen. Mit updateUI() müsste dann auch die Anzeige aktualisiert sein.Code :1 2 3 4
public void aktualisieretabelle(){ mytable.setModel(new MyModel()); mytable.updateUI(); }
Vg Erdal
Ähnliche Themen
-
JPanel aktualisieren
Von 3phasenpeterle im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 02.01.09, 07:17 -
Wie, ein JTable / JPanel / JContentPane aktualisieren?
Von smartin123 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 01.11.08, 00:12 -
.class Dateien einer Bibliothek aktualisieren
Von constantinw im Forum JavaAntworten: 2Letzter Beitrag: 19.10.07, 15:37 -
JPanel mit Label aktualisieren
Von weidlix im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 10.07.07, 12:01 -
GridBagLayout in JPanel: Wie stelle ich es an das Komponenten im JPanel ...
Von mungoparks im Forum JavaAntworten: 7Letzter Beitrag: 16.05.07, 17:03





Zitieren
Login





