screamboy14 Geschrieben 16. Mai 2013 Teilen Geschrieben 16. Mai 2013 huhu liebe forum gemeinde ich hab folgendes wesshalb ich mich an euch wende ich habe ein programm wo man über 2 txt felder die Anzahl der spalten und zeilen meiner JTable angibt um diese dann später via knopfdruck zu inizialisieren/erstellen nun sind dort aber die spaltennamen bereits vorgegeben und die möchte ich editierbar machen z.b. durch einen doppelklick über google bin ich auf einen tableheader gestoßen allerdings wenn ich das richtig verstanden habe muss man diesen von anfang an für die erstellung der tabelle verwendet haben bei mir ist es aber so das die tabelle durch den user erst per knopfdruck und eingabe erstellt wird dessweiteren konnte ich in der headerklasse auch keine namentlich passente methode wie z.b. isEditable finden... und wenn ich den Table header so implementiere wie es in einem der google beitrage steht erscheint bei mir die fehlermeldung das das spaltenarray bei mir KEIN tableheatertyp ist (ist es auch nicht es ist vom typ string) desswegen auch meine frage würde ungern jetzt den gesammten source ummodeln nur wegen dem heater ... villeicht könnt ihr mir da ja helfen auf wunsch kann ich auch einmal den source anhefeten (3 klassen die für dieses problem relevant währen) lg und danke schon einmal im vorraus hier nocheinmal zum verdeutlichen die relevantesten passagen das frame package tabelleAuslesen; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.ScrollPaneConstants; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Auslesen extends JFrame { static JTable table; static JScrollPane scrollPane; static String bezeichnung[]; static String inhalte[][]; static JTextField txtfSpalten; static JTextField txtfZeilen; static JButton btnAuslesen; static JButton btnInizialisieren; public static void main(String[] args) { EventQueue.invokeLater ( new Runnable() { public void run() { try { JFrame frame = new Auslesen(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } } ); } /** * Create the frame. */ public Auslesen() { //----------------------------------------EIGENSCHAFTEN setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setBounds(100, 100, 450, 300); getContentPane().setLayout(null); //----------------------------------------KOMPONENTE scrollPane = new JScrollPane(); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scrollPane.setBounds(10, 54, 424, 132); getContentPane().add(scrollPane); //----------------------------------------LABEL JLabel lblAnzahlSpalten = new JLabel("Anzahl Spalten:"); lblAnzahlSpalten.setBounds(26, 22, 93, 21); getContentPane().add(lblAnzahlSpalten); JLabel lblAnzahlZeilen = new JLabel("Anzahl Zeilen:"); lblAnzahlZeilen.setBounds(169, 22, 89, 21); getContentPane().add(lblAnzahlZeilen); //----------------------------------------TEXTFELDER txtfSpalten = new JTextField(); txtfSpalten.setBounds(129, 22, 30, 20); getContentPane().add(txtfSpalten); txtfSpalten.setColumns(10); txtfZeilen = new JTextField(); txtfZeilen.setColumns(10); txtfZeilen.setBounds(253, 22, 30, 20); getContentPane().add(txtfZeilen); //--------------------------------------Knöpfe btnInizialisieren = new JButton("Inizialisieren"); btnInizialisieren.setBounds(298, 21, 106, 23); btnInizialisieren.addActionListener(new BtnInizial()); getContentPane().add(btnInizialisieren); btnAuslesen = new JButton("Auslesen"); btnAuslesen.addActionListener(new BtnAuslesen()); btnAuslesen.setBounds(150, 211, 89, 23); btnAuslesen.setEnabled(false); getContentPane().add(btnAuslesen); } } und der inizialisieren butten package tabelleAuslesen; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.TableCellEditor; public class BtnInizial implements ActionListener { String txtSpalten; String txtZeilen; int spalten; int zeilen; BtnInizial() { } // @Override public void actionPerformed(ActionEvent e) { zeilen = Getter.GetTextZeilen(txtZeilen); IsOk(zeilen); if (zeilen >0 ) { spalten = Getter.GetTextSpalten(txtSpalten); Auslesen.inhalte = new String [zeilen][spalten]; Auslesen.bezeichnung = new String[spalten]; Auslesen.table = new JTable(zeilen , spalten ); // TabelleVorfüllen(); Auslesen.table.setAutoResizeMode(Auslesen.table.AUTO_RESIZE_OFF);//zellen größe minimal wie überschrift Auslesen.table.setRowSelectionAllowed(false); //blaumarkierung über die reihe ausschalten Auslesen.table.getTableHeader().setReorderingAllowed(false);// spalten unverschiebbar Auslesen.table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);//zell editierung beenden //bei verlassen der tabellenopjektes Auslesen.scrollPane.setViewportView(Auslesen.table);//tabelle auf scrollPane implementieren Auslesen.btnAuslesen.setEnabled(true);//butten anklickbar machen } } public static void IsOk(int wert) { if (wert <=0) { FalscherDatentyp fehler = new FalscherDatentyp(); fehler.setVisible(true); } } public static void TabelleVorfüllen() { for (int i = 0; i < Auslesen.table.getRowCount(); i++) { for (int j = 0; j< Auslesen.table.getColumnCount(); j++) { Auslesen.table.setValueAt("", i, j); } } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 16. Mai 2013 Teilen Geschrieben 16. Mai 2013 Servus, Wie wäre es damit: 1. Nach dem Anklicken des Button (der die Tabelle erstellen soll) öffnest Du ein Fenster, in dem Du die Spaltennamen angeben kannst. 2. Danach erstellst Du die Tabelle. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.