G
Guest
Gast
So, ich poste einfach mal den ganzen Source, auch wenns viel ist ;-)
Die Klasse ist für die graphische Oberfläche eines
Verschlüsselungsprogramms zuständig. Der Fehler tritt in der Methode
"private void uebersetzBActionPerformed(ActionEvent evt)" auf. Der
Befehl "TabPane.getSelectedIndex()" liefert einen null-Wert anstatt
der Nummer des aktiven Reiters des TabbedPanes zurück, weshalb das
Pragramm abbricht. Ich habe beim durchsehen keine logischen Fehler
endeckt, Syntaxfehler sind auch nicht vorhanden, da der Source
compilierbar ist.
Schon mal vielen Dank im Voraus für die Hilfe.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Die Klasse Ansicht zustaendig fuer die Komponenten im Fenster.
*
*/
public class Ansicht extends JFrame
{
private JPanel arbeitP, eingabeP, ausgabeP, auswahlP, radioP,
rsaP, viginereP, buttonP;
private JLabel eingabeL, ausgabeL, auswahlL, key1L,
key2L,viginereL;
private JTextField eingabeTF, ausgabeTF, key1TF,
key2TF,viginereTF;
private JButton uebersetzenB;
private JRadioButton RBcodieren;
private JTabbedPane TabPane;
private boolean farbig = true;
private BorderLayout borderL;
public Ansicht()
{
erzeugeFenster();
}
public void erzeugeFenster()
{
Container C = getContentPane();
setTitle("Enigma");
setBounds(50, 50, 400, 250);
arbeitP = new JPanel();
borderL = new BorderLayout();
arbeitP.setLayout(borderL);
C.add(arbeitP);
// eingabeP enthaelt eingabeL, eingabeTF
eingabeP = new JPanel();
arbeitP.add(eingabeP, BorderLayout.NORTH);
eingabeL = new JLabel("Eingabe");
eingabeP.add(eingabeL);
eingabeTF = new JTextField(10);
eingabeP.add(eingabeTF);
//auswahlP enthaelt RadioB, uebersetzenB
auswahlP = new JPanel();
arbeitP.add(auswahlP, BorderLayout.CENTER);
borderL = new BorderLayout(10,10);
auswahlP.setLayout(borderL);
radioP = new JPanel();
if (farbig) radioP.setBackground(new Color(180,255,180));
ButtonGroup BGcodierAuswahl = new ButtonGroup();
JRadioButton RBcodieren = new JRadioButton("Codieren");
RBcodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
RBcodierenActionPerformed(evt);
}
});
JRadioButton RBdecodieren = new JRadioButton("Decodieren");
RBdecodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
RBdecodierenActionPerformed(evt);
}
});
radioP.add(RBcodieren);
radioP.add(RBdecodieren);
BGcodierAuswahl.add(RBcodieren);
BGcodierAuswahl.add(RBdecodieren);
auswahlP.add(radioP,BorderLayout.NORTH);
rsaP = new JPanel();
viginereP = new JPanel();
JTabbedPane TabPane = new JTabbedPane();
TabPane.addTab("RSA", rsaP);
// enthält ein textfeld
key1L = new JLabel("N-Schlüssel");
rsaP.add(key1L);
key1TF = new JTextField(10);
rsaP.add(key1TF);
// enthält ein textfeld
key2L = new JLabel("Key2");
rsaP.add(key2L);
key2TF = new JTextField(10);
rsaP.add(key2TF);
TabPane.addTab("Viginere", viginereP);
// enthält ein textfeld
viginereL = new JLabel("Schluesselwort");
viginereP.add(viginereL);
viginereTF = new JTextField(10);
viginereP.add(viginereTF);
auswahlP.add (TabPane);
// zweiter Bereich (buttonP) enthält einen Button.
buttonP = new JPanel();
if (farbig) buttonP.setBackground(new Color(255,180,180));
uebersetzenB = new JButton("Uebersetzen");
uebersetzenB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
uebersetzBActionPerformed(evt);
}
});
buttonP.add(uebersetzenB);
auswahlP.add(buttonP, BorderLayout.SOUTH);
//ausgabeP enthaelt ausgabeL, ausgabeTF
ausgabeP = new JPanel();
arbeitP.add(ausgabeP, BorderLayout.SOUTH);
ausgabeL = new JLabel("Ausgabe");
ausgabeP.add(ausgabeL);
ausgabeTF = new JTextField(10);
ausgabeP.add(ausgabeTF);
setVisible(true);
}
// Methode die Codier- und Decodierfunktion aufruft
private void uebersetzBActionPerformed(ActionEvent evt)
{
if (TabPane.getSelectedIndex() == 0)
{
rsa rsamodul = new rsa();
rsamodul.holeDaten(eingabeTF.getText(), key1TF.getText(),
key2TF.getText(), RBcodieren.isSelected() );
ausgabeTF.setText(rsamodul.gibWort());
}
if (TabPane.getSelectedIndex() == 1)
{
vigenere vigeneremodul = new vigenere();
vigeneremodul.holeDaten(viginereTF.getText(),
eingabeTF.getText(), RBcodieren.isSelected() );
ausgabeTF.setText(vigeneremodul.gibWort());
}
}
// Beschriftung der Labels für Codieren
private void RBcodierenActionPerformed(ActionEvent evt)
{
eingabeL.setText("Klartext");
ausgabeL.setText("Geheimtext");
key2L.setText("E-Schlüssel");
}
// Beschriftung der Lables für Decodieren
private void RBdecodierenActionPerformed(ActionEvent evt)
{
eingabeL.setText("Geheimtext");
ausgabeL.setText("Klartext");
key2L.setText("D-Schlüssel");
}
}
Die Klasse ist für die graphische Oberfläche eines
Verschlüsselungsprogramms zuständig. Der Fehler tritt in der Methode
"private void uebersetzBActionPerformed(ActionEvent evt)" auf. Der
Befehl "TabPane.getSelectedIndex()" liefert einen null-Wert anstatt
der Nummer des aktiven Reiters des TabbedPanes zurück, weshalb das
Pragramm abbricht. Ich habe beim durchsehen keine logischen Fehler
endeckt, Syntaxfehler sind auch nicht vorhanden, da der Source
compilierbar ist.
Schon mal vielen Dank im Voraus für die Hilfe.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Die Klasse Ansicht zustaendig fuer die Komponenten im Fenster.
*
*/
public class Ansicht extends JFrame
{
private JPanel arbeitP, eingabeP, ausgabeP, auswahlP, radioP,
rsaP, viginereP, buttonP;
private JLabel eingabeL, ausgabeL, auswahlL, key1L,
key2L,viginereL;
private JTextField eingabeTF, ausgabeTF, key1TF,
key2TF,viginereTF;
private JButton uebersetzenB;
private JRadioButton RBcodieren;
private JTabbedPane TabPane;
private boolean farbig = true;
private BorderLayout borderL;
public Ansicht()
{
erzeugeFenster();
}
public void erzeugeFenster()
{
Container C = getContentPane();
setTitle("Enigma");
setBounds(50, 50, 400, 250);
arbeitP = new JPanel();
borderL = new BorderLayout();
arbeitP.setLayout(borderL);
C.add(arbeitP);
// eingabeP enthaelt eingabeL, eingabeTF
eingabeP = new JPanel();
arbeitP.add(eingabeP, BorderLayout.NORTH);
eingabeL = new JLabel("Eingabe");
eingabeP.add(eingabeL);
eingabeTF = new JTextField(10);
eingabeP.add(eingabeTF);
//auswahlP enthaelt RadioB, uebersetzenB
auswahlP = new JPanel();
arbeitP.add(auswahlP, BorderLayout.CENTER);
borderL = new BorderLayout(10,10);
auswahlP.setLayout(borderL);
radioP = new JPanel();
if (farbig) radioP.setBackground(new Color(180,255,180));
ButtonGroup BGcodierAuswahl = new ButtonGroup();
JRadioButton RBcodieren = new JRadioButton("Codieren");
RBcodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
RBcodierenActionPerformed(evt);
}
});
JRadioButton RBdecodieren = new JRadioButton("Decodieren");
RBdecodieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
RBdecodierenActionPerformed(evt);
}
});
radioP.add(RBcodieren);
radioP.add(RBdecodieren);
BGcodierAuswahl.add(RBcodieren);
BGcodierAuswahl.add(RBdecodieren);
auswahlP.add(radioP,BorderLayout.NORTH);
rsaP = new JPanel();
viginereP = new JPanel();
JTabbedPane TabPane = new JTabbedPane();
TabPane.addTab("RSA", rsaP);
// enthält ein textfeld
key1L = new JLabel("N-Schlüssel");
rsaP.add(key1L);
key1TF = new JTextField(10);
rsaP.add(key1TF);
// enthält ein textfeld
key2L = new JLabel("Key2");
rsaP.add(key2L);
key2TF = new JTextField(10);
rsaP.add(key2TF);
TabPane.addTab("Viginere", viginereP);
// enthält ein textfeld
viginereL = new JLabel("Schluesselwort");
viginereP.add(viginereL);
viginereTF = new JTextField(10);
viginereP.add(viginereTF);
auswahlP.add (TabPane);
// zweiter Bereich (buttonP) enthält einen Button.
buttonP = new JPanel();
if (farbig) buttonP.setBackground(new Color(255,180,180));
uebersetzenB = new JButton("Uebersetzen");
uebersetzenB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
uebersetzBActionPerformed(evt);
}
});
buttonP.add(uebersetzenB);
auswahlP.add(buttonP, BorderLayout.SOUTH);
//ausgabeP enthaelt ausgabeL, ausgabeTF
ausgabeP = new JPanel();
arbeitP.add(ausgabeP, BorderLayout.SOUTH);
ausgabeL = new JLabel("Ausgabe");
ausgabeP.add(ausgabeL);
ausgabeTF = new JTextField(10);
ausgabeP.add(ausgabeTF);
setVisible(true);
}
// Methode die Codier- und Decodierfunktion aufruft
private void uebersetzBActionPerformed(ActionEvent evt)
{
if (TabPane.getSelectedIndex() == 0)
{
rsa rsamodul = new rsa();
rsamodul.holeDaten(eingabeTF.getText(), key1TF.getText(),
key2TF.getText(), RBcodieren.isSelected() );
ausgabeTF.setText(rsamodul.gibWort());
}
if (TabPane.getSelectedIndex() == 1)
{
vigenere vigeneremodul = new vigenere();
vigeneremodul.holeDaten(viginereTF.getText(),
eingabeTF.getText(), RBcodieren.isSelected() );
ausgabeTF.setText(vigeneremodul.gibWort());
}
}
// Beschriftung der Labels für Codieren
private void RBcodierenActionPerformed(ActionEvent evt)
{
eingabeL.setText("Klartext");
ausgabeL.setText("Geheimtext");
key2L.setText("E-Schlüssel");
}
// Beschriftung der Lables für Decodieren
private void RBdecodierenActionPerformed(ActionEvent evt)
{
eingabeL.setText("Geheimtext");
ausgabeL.setText("Klartext");
key2L.setText("D-Schlüssel");
}
}