Ich lese mir aus einem BLOB-Feld in einer Datenbank ein Feld aus, in dem ein einseitiges PDF gespeichert ist. Wenn ich meine Anwendung starte und auf den Button zur anzeige klicke, wird dieses PDF auch korrekt angezeigt. Wenn ich allerdings mittels abbrechenButton auf die vorherige Maske wechsle und dann nochmals das PDF anzeigen lassen will, erhalte ich nichts, außer ein weißes Blatt
Ich denke an meiner Art und Weise, wie ich das PDF aus der Datenbank hole und anschließend rendere kann es nicht liegen. Eher an der Art wie ich zurückgehe. Was mache ich falsch?
MenuAnzeigen.java
Menu.java
und last but not least, der Button, auf den ich klicke, wenn ich das PDF anzeigen will:
aus Login.java
Ich denke an meiner Art und Weise, wie ich das PDF aus der Datenbank hole und anschließend rendere kann es nicht liegen. Eher an der Art wie ich zurückgehe. Was mache ich falsch?
MenuAnzeigen.java
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Rectangle;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JPanel;
import com.adobe.acrobat.Viewer;
public class MenuAnzeigen{
public byte essenplan[];
public void menuAnzeigen(final JPanel panel)
{
Progress progress = new Progress();
progress.aktualisiereAnzeige();
new Thread(new Runnable()
{
private byte[] essenplan;
public void run()
{
DBConnection dbcon = new DBConnection();
String akt_menu = "select menu from zeit_menu where woche = '48'";
Viewer viewer = null;
try
{
Connection mCon = dbcon.getCon();
Statement stmt = mCon.createStatement();
ResultSet mReSet = stmt.executeQuery(akt_menu);
while(mReSet.next())
{
essenplan = mReSet.getBytes("menu");
}
stmt.close();
mReSet.close();
dbcon.closeCon();
viewer = new Viewer();
viewer.setBounds(new Rectangle(260, 1, 541, 709));
viewer.setBackground(new Color(0, 24, 66));
viewer.activateWithoutBars();
viewer.zoomTo(0.90);
panel.add(viewer, BorderLayout.CENTER);
viewer.setDocumentByteArray(essenplan);
System.out.println("Essenplan: " + viewer);
viewer.activate();
//panel.show();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}).start();
progress.resetAnzeige();
}
}
Menu.java
Code:
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.Point;
import java.awt.Rectangle;
import java.io.InputStream;
import javax.swing.JButton;
import java.awt.Font;
import [zensiert].MenuAnzeigen;
public class Menu extends JPanel {
public InputStream input = null;
public byte essenplan[] = null;
private JButton abbrechen = null;
public Menu() {
super();
initialize();
}
private void initialize() {
this.setSize(1024, 712);
this.setLayout(null);
this.setBackground(new Color(0, 24, 66));
this.setPreferredSize(new Dimension(1024, 712));
this.setLocation(new Point(0, 0));
this.add(getAbbrechen(), null);
MenuAnzeigen anzeigen = new MenuAnzeigen();
anzeigen.menuAnzeigen(this);
}
private JButton getAbbrechen() {
if (abbrechen == null) {
abbrechen = new JButton();
abbrechen.setBounds(new Rectangle(869, 5, 150, 50));
abbrechen.setFont(new Font("Verdana", Font.BOLD, 16));
abbrechen.setText("abbrechen");
abbrechen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
removeAll();
Login login = new Login();
login.setLocation(0, 0);
add(login);
repaint();
}
});
}
return abbrechen;
}
}
und last but not least, der Button, auf den ich klicke, wenn ich das PDF anzeigen will:
aus Login.java
Code:
private JButton getMenu() {
if (menu == null) {
menu = new JButton();
menu.setSize(new Dimension(214, 82));
menu.setPreferredSize(new Dimension(214, 82));
menu.setText("Essen");
menu.setFont(new Font("Verdana", Font.BOLD, 23));
menu.setLocation(new Point(715, 438));
menu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
removeAll();
Menu menu = new Menu();
add(menu);
validate();
repaint();
}
});
}
return menu;
}