Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

			}

		}

	}


}

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.