Ich stehe wieder mal total auf dem Schlauch. Ich habe folgenden Code:
Auf dem einen Rechner wird die JScrollPane ganz normal angezeigt. Nehme ich den Code auf einen anderen Rechner - mit der selben Runtime-Version, bekomme ich bei der JScrollPane eine NullPointerException. :bahnhof:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
class E2 extends JFrame
{
// ----------------------------------------------------------
// Variablen Deklaration
// ----------------------------------------------------------
public static JButton zeile_hinzufügen, zeile_löschen;
public static JPanel nordPanel, centerPanel, südPanel, hilfspanel, hilfspanel1, hilfspanel2, hilfspanel3, hilfspanel4, hilfspanel5;
public static JLabel krankenhaus, krankenhaus_name, krankenhaus_strasse, krankenhaus_plz, krankenhaus_ort;
public static JLabel Seite, Druckdatum, überschrift;
public static JLabel fussnote1, fussnote1_1, fussnote1_2, fussnote1_3, fussnote1_4, fussnote1_5, fussnote1_6, fussnote2;
public static JLabel fusszeile_links, fusszeile_mitte, fusszeile_rechts;
public static Container con1;
/** ----------------------------------------------------------
WindowAdapter
----------------------------------------------------------
*/
class WindowLauscher extends WindowAdapter
{
public void windowClosing (WindowEvent e)
{
dispose();
System.exit(0);
}
}
/* ----------------------------------------------------------
Action Listener
----------------------------------------------------------
*/
/** Listener für MENUITEM "beenden"*/
class beendenListener implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
System.exit(0);
}
}
/**
----------------------------------------------------------
Konstruktor der Fensterklasse
----------------------------------------------------------
*/
E2(String titel)
{
super(titel);
con1 = getContentPane();
con1.setLayout(new BorderLayout());
nordPanel = new JPanel(new BorderLayout());
centerPanel = new JPanel(new BorderLayout());
südPanel = new JPanel(new BorderLayout());
hilfspanel = new JPanel(new GridLayout(5,2,2,2));
hilfspanel1 = new JPanel(new GridLayout(2,2,2,2));
hilfspanel2 = new JPanel(new BorderLayout());
hilfspanel3 = new JPanel(new GridLayout(8,1,1,1));
hilfspanel4 = new JPanel(new GridLayout(1,2,5,5));
hilfspanel5 = new JPanel();
/*---------------------------------------------------*/
/*Formatierungen
/*---------------------------------------------------*/
Border rahmen = BorderFactory.createLineBorder(Color.black);
// ***** NORDPANEL******
// Hier kommt es noch zu einer Null-Pointer-Exception
krankenhaus = new JLabel("Krankenhaus ");
//krankenhaus_name = new JLabel(StartFrame.Name_text.getText());
//krankenhaus_strasse = new JLabel(StartFrame.Straße_text.getText());
//krankenhaus_plz = new JLabel(StartFrame.PLZ_text.getText());
//krankenhaus_ort = new JLabel(StartFrame.Ort_text.getText());
krankenhaus_name = new JLabel("Name");
krankenhaus_strasse = new JLabel("Strasse");
krankenhaus_plz = new JLabel("PLZ");
krankenhaus_ort = new JLabel("Ort");
/*Diese Zeile ist auch für die anderen Formulare wichtig!!! Um ein Panel einen Rahmen ziehen*/
hilfspanel.setBorder( BorderFactory.createRaisedBevelBorder() );
hilfspanel.add(krankenhaus);
hilfspanel.add(krankenhaus_name);
hilfspanel.add(krankenhaus_strasse);
hilfspanel.add(krankenhaus_plz);
hilfspanel.add(krankenhaus_ort);
Seite = new JLabel("Seite:");
Seite.setBorder(rahmen);
Druckdatum = new JLabel("Hier das Druckdatum vom Stammdatenblatt übernehmen");
Druckdatum.setBorder(rahmen);
hilfspanel1.add(Seite);
hilfspanel1.add(Druckdatum);
nordPanel.add(hilfspanel, BorderLayout.WEST);
nordPanel.add(hilfspanel1, BorderLayout.EAST);
// ***** Ende NORDPANEL******
// ***** CENTERPANEL******
überschrift = new JLabel("E2 Aufstellung der Zusatzentgelte für das Krankenhaus *) 1)");
Font font = new Font("",Font.BOLD,16);
überschrift.setFont(font);
String E2Label[] = {"Nachrichtlich", "ZE0-Nr.", "Anzahl der ZE",
"Entgelthöhe lt. ZE-Katalog", "Erlössumme", "Nachrichtlich", "N"};
Object[][] data =
{
{"Daten"
}
};
final TD1Model tbl = new TD1Model(data, E2Label);
final JTable table = new JTable(tbl)
{
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if (!isRowSelected(row))
{
c.setBackground(Color.white);
if(row > tbl.getRowCount()-4)
{
c.setBackground(Color.blue);
}
//----------------------------------
else if (row > tbl.getRowCount()-6)
{
c.setBackground(Color.yellow);
}
//----------------------------------
}
return c;
}
};
//table.setShowHorizontalLines(false);
//table.setShowVerticalLines(false);
//tbl.setPreferredScrollableViewportSize(new Dimension( 500, 100 ) );
JScrollPane sp = new JScrollPane( table );
hilfspanel5.add(sp);
// spalten nicht resizable machen, nicht zulassen dass die spaltenreihenfolge geändert werden kann
JTableHeader header = table.getTableHeader();
header.setResizingAllowed(false);
header.setReorderingAllowed(false);
JComponent component = null;
// Diese Zeilen sind für das Selektieren einer ganzen Spalte
//table.setColumnSelectionAllowed(true);
//table.setRowSelectionAllowed(false);
// Hier müssen die Zellen angegeben werden, die nicht editerbar sein sollen
table.isCellEditable(1,1);
//Hinzufügen eines MouseListener an den TableHeader für ganze Spalte markieren
/*table.getTableHeader().addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
//Abfragen, ob die "geklickte" Spalte bereits selektiert ist...
if( table.getSelectedColumn() == table.columnAtPoint(e.getPoint()))
{
//...falls ja, dann deselektieren...
table.removeColumnSelectionInterval(0, table.getColumnCount() - 1);
}
else
//...falls nein, dann selektieren
table.setColumnSelectionInterval(table.columnAtPoint(e.getPoint()), table.columnAtPoint(e.getPoint()));
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});*/
zeile_löschen = new JButton("Zeile löschen");
zeile_löschen.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
table.setRowSelectionInterval(tbl.getRowCount()-4, tbl.getRowCount()-4);
int row = tbl.getRowCount() - 4;
if (row < 0 || row >= tbl.getRowCount());
System.out.println("Fehler");
tbl.removeRow(row);
}
});
zeile_hinzufügen = new JButton("Zeile hinzufügen");
zeile_hinzufügen.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
tbl.insertRow(3, new Object[]
{
"",
"",
new Integer( 0 ),
new Double( 0.0 ),
new Double( 0.0 )
});
}
});
hilfspanel4.add(zeile_hinzufügen);
hilfspanel4.add(zeile_löschen);
nordPanel.add(hilfspanel4, BorderLayout.CENTER);
fussnote1 = new JLabel(" 1) Die Aufstellung ist für die folgenden Zeiträume jeweils gesondert wie folgt aufzustellen und vorzulegen:");
fussnote1_1 = new JLabel(" - für das abgelaufene Kalenderjahr die Ist-Daten nach dem ZE-Katalog des abgelaufenen Jahres (Ziel: u. a. Ermittlung der");
fussnote1_2 = new JLabel(" endgültigen Erlösausgleiche),");
fussnote1_3 = new JLabel(" - für das laufende Kalenderjahr die hochgerechneten Ist-Daten nach dem ZE-Katalog des laufenden Jahres (Ziele:");
fussnote1_4 = new JLabel(" Darstellung der Ist-Daten sowie Ermittlung der vorläufigen Erlösausgleiche),");
fussnote1_5 = new JLabel(" - für den Vereinbarungszeitraum die Forderung des Krankenhauses nach dem ZE-Katalog für den Vereinbarungszeitraum");
fussnote1_6 = new JLabel(" (Ziel: Darstellung für die Budgetvereinbarung");
fussnote2 = new JLabel(" 2) Ohne Überlieger am Jahresbeginn");
hilfspanel2.add(überschrift, BorderLayout.NORTH);
hilfspanel2.add(sp, BorderLayout.WEST );
hilfspanel2.add(hilfspanel5);
hilfspanel3.add(fussnote1);
hilfspanel3.add(fussnote1_1);
hilfspanel3.add(fussnote1_2);
hilfspanel3.add(fussnote1_3);
hilfspanel3.add(fussnote1_4);
hilfspanel3.add(fussnote1_5);
hilfspanel3.add(fussnote1_6);
hilfspanel3.add(fussnote2);
hilfspanel2.add(hilfspanel3, BorderLayout.SOUTH);
// ***** Ende CENTERPANEL******
// ***** SÜDPANEL******
fusszeile_links = new JLabel("Datei: AEB-Programm 2007.0");
fusszeile_mitte = new JLabel(" E2");
fusszeile_rechts = new JLabel("Seite X von Seite y");
südPanel.add(fusszeile_links, BorderLayout.WEST);
südPanel.add(fusszeile_mitte, BorderLayout.CENTER);
südPanel.add(fusszeile_rechts, BorderLayout.EAST);
centerPanel.add(hilfspanel2, BorderLayout.CENTER);
con1.add(nordPanel, BorderLayout.NORTH);
con1.add(centerPanel, BorderLayout.CENTER);
con1.add(südPanel, BorderLayout.SOUTH);
// Fenster Lauscher anmelden
addWindowListener (new WindowLauscher());
}
}
class TD1Model extends DefaultTableModel
{
public TD1Model(Object[][] data, String[] labels)
{
super( data, ( Object[] ) labels );
}
// isCellEditable ist für die Editierbarkeit zuständig
public boolean isCellEditable(int row, int column)
{
return false;
}
}
/** ----------------------------------------------------------
Main Methode des Programms
----------------------------------------------------------
*/
/*class E2_2006
{
public static void main (String args[])
{
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch (Exception ex)
{
ex.printStackTrace();
}
E2 e2_2006 = new E2("E2 2006");
e2_2006.setLocation(50,50);
e2_2006.pack();
e2_2006.setVisible(true);
}
}*/
Auf dem einen Rechner wird die JScrollPane ganz normal angezeigt. Nehme ich den Code auf einen anderen Rechner - mit der selben Runtime-Version, bekomme ich bei der JScrollPane eine NullPointerException. :bahnhof: