Hi,
mit meiner Tabelle bin ich inzwischen schon ziemlich weit.
Danke nochmal an alle die mir bisher geholfen haben.
Jetzt wollte ich noch so eine Art Startbild einfügen,
vor dem ersten Aufrufen der Tabelle.
Das bild soll aber unsichtbar werden, wenn ich die Tabelle aufrufe und die Tabelle dementsprechend sichtbar.
Hier erstmal der ganze Code
//Ende RfidFinder
In Zeile 63-75
wollte ich die panels Sichtbar bzw unsichtbar setzten.
unten im ActionListener (ab Zeile 113) habe ich mir gedacht
das ich einfacht false und true austausche und mit validate() das neu beschreiben "befehle"
Hier bekomme ich aber schon die Fehlermeldung.
Alle anderen implementierten Sachen funktionieren.
Fehler ist
Was hab ich den vergessen?
Wie immer großes Danke im voraus.
mit meiner Tabelle bin ich inzwischen schon ziemlich weit.
Danke nochmal an alle die mir bisher geholfen haben.
Jetzt wollte ich noch so eine Art Startbild einfügen,
vor dem ersten Aufrufen der Tabelle.
Das bild soll aber unsichtbar werden, wenn ich die Tabelle aufrufe und die Tabelle dementsprechend sichtbar.
Hier erstmal der ganze Code
Java:
//imports input output
import java.io.*;
import java.io.File;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.io.IOException;
//imports Buttons, panels etc
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.AbstractAction;
import javax.swing.Icon;
//imports JTable
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
//imports JTable sortieren
import javax.swing.table.TableRowSorter;
import javax.swing.table.TableModel;
//Action
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
//safety import
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class RfidFinder3 extends JFrame {
private static final long serialVersionUID = 1L;
private static final String[] TABLE_COLUMN_NAMES = new String[] {
"Name", "Ort", "Nummer", "Barcode"
};
private JTable table;
private DefaultTableModel model;
//Konstruktor
public RfidFinder3() {
;
model = new DefaultTableModel(TABLE_COLUMN_NAMES, 0);
table = new JTable(model);
// icons einfügen
Icon bildbuch = new ImageIcon("buch.png");
Icon bilddiskette = new ImageIcon("diskette.png");
Icon bildRfid = new ImageIcon("RFID-Finder.png");
enableSorting(table); // aufruf methode fürs sortieren
Container contentPane = getContentPane();
//JTable auf panel und container legen
JPanel centerPanelTable = new JPanel(new BorderLayout());
centerPanelTable.add(new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
centerPanelTable.setVisible(true);
//Hier sollte jetzt eigentlich centerPanelTable.setVisible(false); stehen
contentPane.add(centerPanelTable);
/*RFID BIld hinzufügen
JPanel centerPanelPicture = new JPanel(new BorderLayout());
centerPanelPicture.add(new JLabel(bildRfid));
centerPanelPicture.setVisible(true);
contentPane.add(centerPanelPicture);
*/
JPanel southPanel = new JPanel(new GridLayout(1,4));
// Button für Bibliothek anzeigen
JButton showAllObjectsButton = new JButton(new ShowAllObjectsAction(" Alle Objekte anzeigen", bildbuch));
southPanel.add(showAllObjectsButton);
showAllObjectsButton.setEnabled( true );
JButton showFoundObjekteButton = new JButton("Gefundende Objekte anzeigen");
southPanel.add(showFoundObjekteButton);
showFoundObjekteButton.setEnabled( true );
// Button fürs zeilen hinzufügen
JButton newLineButton = new JButton(new newLineAction("neue Zeile"));
southPanel.add(newLineButton);
newLineButton.setEnabled( true );
// Button fürs speichern
JButton saveButton = new JButton(new saveAction(" Speichern",bilddiskette));
southPanel.add(saveButton);
saveButton.setEnabled( true );
contentPane.add(southPanel, BorderLayout.SOUTH);
}
//ActionListener für "Alles Anzeigen Button
private class ShowAllObjectsAction extends AbstractAction {
public ShowAllObjectsAction() {
this(null);
}
public ShowAllObjectsAction(String text) {
this(text, null);
}
public ShowAllObjectsAction(String text, Icon icon) {
super(text, icon);
}
public void actionPerformed(ActionEvent e) {
File file = new File("texttabelle.txt");//texttabelle.txt
if(!file.exists()) {
JOptionPane.showMessageDialog(null, "Die Angegebene TextdateiDatei existiert nicht.\nKann nicht fortfahren.",
null, JOptionPane.ERROR_MESSAGE);
return;
}
/*Hier habe ich mir gedacht die Panels sichtbar bzw unsichtbar zu machen
centerPanelPicture.setVisible(false);
centerPanelTable.setVisible(true);
validate();
*/
model.setRowCount(0);
BufferedReader br = null;
try{
FileReader fr = new FileReader(file);
br = new BufferedReader(fr);
String[][] fileContent = readANSIFileToArray(br);
for(String[] line:fileContent) {
model.addRow(line);
}
table.revalidate();
}
catch(IOException ex) {
JOptionPane.showMessageDialog(null, "Beim lesen der Datei ist ein Fehler aufgetreten:\n" + ex.getMessage(),
null,JOptionPane.ERROR_MESSAGE);
} finally {
try {
if(br != null) {
br.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
//
}
}
//ActionListener für "Neue Zeile" Button
private class newLineAction extends AbstractAction {
public newLineAction() {
this(null);
}
public newLineAction(String text) {
this(text, null);
}
public newLineAction(String text, Icon icon) {
super(text, icon);
}
public void actionPerformed(ActionEvent e) {
String leereZeile [] = new String []
{"", "", "", ""};
model.addRow(leereZeile);
}
}
//ActionListener für Speichern der angezeigten Tabelle
private class saveAction extends AbstractAction{
public saveAction() {
this(null);
}
public saveAction(String text) {
this(text, null);
}
public saveAction(String text, Icon icon) {
super(text, icon);
}
public void actionPerformed(ActionEvent e) {
try{
save();} //methode save zum speichern in datei
catch( FileNotFoundException ez ) // Datei gibt’s nich’
{
//System.err.println( "Datei gibt’s nicht!" );
JOptionPane.showMessageDialog(null, "Die Angegebene TextdateiDatei existiert nicht.\nKann nicht fortfahren.",
null, JOptionPane.ERROR_MESSAGE);
}
catch ( IOException ez ) // Schreib- Leseprobleme
{
// System.err.println( "Schreib- Leseprobleme!" );
JOptionPane.showMessageDialog(null, "Fehler beim feststellen, der größe der Arrays!",
null, JOptionPane.ERROR_MESSAGE);
}
}
}
//Methode zum speichern
private void save() throws IOException {
FileWriter fw = new FileWriter("texttabelle.txt");
BufferedWriter bw = new BufferedWriter(fw);
int rowCount = 0;
int columnCount = 0;
int rowSize = model.getRowCount();
int columnSize = model.getColumnCount();
String field;
while (rowSize >= (rowCount+1))
{
columnCount = 0;
while (columnSize >= (columnCount+1)){
//getValueAt ausprobiert
//String t = (String)model.getValueAt(0, 0);
for (int x = 0; x<=2; x++)
{
field = (String)model.getValueAt(rowCount, columnCount);
if(field == null)
{field = "";}
System.out.println(field);
bw.write(field);
bw.write(";");
columnCount = columnCount + 1;
}
field = (String)model.getValueAt(rowCount, columnCount);
if(field == null){
field = "";
}
System.out.println(field);
bw.write(field);
bw.newLine();
columnCount = columnCount + 1;
}
rowCount = rowCount +1;
}
bw.close();
}
//readANSIFILE methode
private String[][] readANSIFileToArray(Reader reader) throws IOException {
if(!(reader instanceof BufferedReader)) {
return(readANSIFileToArray(new BufferedReader(reader)));
}
//Selber die größe des arrays festlegen
LineNumberReader f;
String line;
int sizeANSIFile = 1; //für die größe des arrays
f = new LineNumberReader(new FileReader("texttabelle.txt"));
while ((line = f.readLine()) != null) {
sizeANSIFile= f.getLineNumber();
}
f.close();
BufferedReader br = (BufferedReader) reader;
String[][] values = new String[sizeANSIFile][0];
int lineCounter = 0;
for(String s = null; (s = br.readLine()) != null; lineCounter++) {
String[] lineContent = s.split(";");
for(int y = 0, size = lineContent.length; y < size; y++) {
values[lineCounter] = lineContent;//Verbessert values[lineCounter][y] = lineContent[y]; //Hm, values[lineCounter] = lineContent[y]; funktioniert leider nicht. Nie getestet, aber denke so müsste es auch klappen.
}
}
return(values);
}
//Methode zum größe feststellen
private int arraySize(int readersize) throws IOException {
LineNumberReader g;
String line;
readersize = 1; //für die größe des arrays
try {
g = new LineNumberReader(new FileReader("texttabelle.txt"));
while ((line = g.readLine()) != null) {
readersize= g.getLineNumber();
}
g.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog(null, "Fehler beim feststellen, der größe der Arrays!",
null, JOptionPane.ERROR_MESSAGE);
}
return readersize;
}
//Methode zum Sortieren
public void enableSorting(JTable table) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
if (model == null)
return;
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>();
table.setRowSorter(sorter);
sorter.setModel(model);
// Filter zum anzeigen von nur bestimmten zeichenkombinationen
// zur Aktivierung entkommentieren
//sorter.setRowFilter(RowFilter.regexFilter(".*1.*"));
}
//Testmethode
private int test(int test){
return test +3;
}
//main
public static void main (String []args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame fenster = new RfidFinder3();
fenster.setTitle("RFID Finder Tabellenansicht");
fenster.setSize(780,610);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setVisible(true);
}
});
}
}
In Zeile 63-75
wollte ich die panels Sichtbar bzw unsichtbar setzten.
Java:
//JTable auf panel und container legen
JPanel centerPanelTable = new JPanel(new BorderLayout());
centerPanelTable.add(new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
centerPanelTable.setVisible(true);
//Hier sollte jetzt eigentlich centerPanelTable.setVisible(false); stehen
contentPane.add(centerPanelTable);
/*RFID BIld hinzufügen
JPanel centerPanelPicture = new JPanel(new BorderLayout());
centerPanelPicture.add(new JLabel(bildRfid));
centerPanelPicture.setVisible(true);
contentPane.add(centerPanelPicture);
*/
unten im ActionListener (ab Zeile 113) habe ich mir gedacht
das ich einfacht false und true austausche und mit validate() das neu beschreiben "befehle"
Java:
public void actionPerformed(ActionEvent e) {
File file = new File("texttabelle.txt");//texttabelle.txt
if(!file.exists()) {
JOptionPane.showMessageDialog(null, "Die Angegebene TextdateiDatei existiert nicht.\nKann nicht fortfahren.",
null, JOptionPane.ERROR_MESSAGE);
return;
}
/*Hier habe ich mir gedacht die Panels sichtbar bzw unsichtbar zu machen
centerPanelPicture.setVisible(false);
centerPanelTable.setVisible(true);
validate();
*/
Hier bekomme ich aber schon die Fehlermeldung.
Alle anderen implementierten Sachen funktionieren.
Java:
centerPanelPicture.setVisible(false);
centerPanelPicture cannot be resolved
Was hab ich den vergessen?
Wie immer großes Danke im voraus.