How to add a jasper preview into a JPanel - java

I have created a small report using jasper reports and I previewed it using the jasper viewer as below,
con = JDBCConnectionPool.getInstance().checkOut();
String fileName = getClass().getClassLoader().getResource("com/bio/ofm/mnu/views/reports/jasperReports/repAuditReport.jrxml").getFile();
JasperReport report = JasperCompileManager.compileReport(fileName);
JasperPrint print = JasperFillManager.fillReport(report, null, con);
JasperViewer viewer = new JasperViewer(print);
viewer.setVisible(true);
But I need to show this report in a JPanel so, I tried as,
JasperViewer.setDefaultLookAndFeelDecorated(true);
JRViewer jrv = new JRViewer(print);
jrv.setPreferredSize(new Dimension(getSize()));
JScrollPane reportScroll = new JScrollPane(jrv);
panel1.add(reportScroll);
but the report is not showing as I expected, please explain what is the correct way to add a jasper preview in to a JPanel.

JasperViewer extends JFrame, and you don't want to add a JFrame to a JPanel. You could perhaps add the JasperViewer's contentPane to the JPanel. The other issues I've discussed in a comment still remain unresolved:
What layout manager is panel1 using? Are you adding the JScrollPane to the JPanel after the GUI has been displayed? If so, do you call revalidate() and repaint() on the JPanel after the addition?

this my code and it works
JRViewer jr=new JRViewer(print);
jPanel1.setLayout(new BorderLayout());
jPanel1.repaint();
jPanel1.add(jr);
jPanel1.revalidate();

Related

How to disable PDF print options using JWebBrowser

I'm using The DJ Project to open PDF files into JFrame.
Using the next code:
JPanel panel = new JPanel();
setContentPane(panel);
JWebBrowser browser = new JWebBrowser();
browser.setBarsVisible(false);
browser.setStatusBarVisible(false);
browser.print(false);
browser.setPreferredSize(new Dimension(800,600));
panel.add(browser);
browser.navigate("C:\\Users\\MyUser\\Desktop\\acta.pdf");
pack();
setVisible(true);
setPreferredSize(new Dimension(800,600));
And is loading the PDF file, but I want to disable the next options:
The print and Save option. I know that is rendering over a Web Browser.
Is posible remove those options using java ?
The only way that I already found, is disabling all the components and interactions, with:
browser.getNativeComponent().setEnabled(false)
Or disabled all the right clicks, for example:
webBrowser.executeJavascript("document.oncontextmenu = function functionName(){ return false; }");

Adding Webcam panel to existing jPanel

I'm using NetBeans and I made basic layout with jPanel in the middle of it. Now I would like to add Webcam panel in this jPanel.
Here's example how to get frames from webcam and display it in new window. It's working fine.
Webcam webcam = Webcam.getDefault();
webcam.setViewSize(WebcamResolution.VGA.getSize());
WebcamPanel panel = new WebcamPanel(webcam);
panel.setFPSDisplayed(true);
panel.setDisplayDebugInfo(true);
panel.setImageSizeDisplayed(true);
panel.setMirrored(true);
JFrame window = new JFrame("Test webcam panel");
window.add(panel);
window.setResizable(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
But when I tried to display it in my existing jPanel it's not working. Webcam screen is not visible. Here's my code:
Webcam webcam = Webcam.getDefault();
webcam.setViewSize(WebcamResolution.VGA.getSize());
WebcamPanel panel = new WebcamPanel(webcam);
panel.setFPSDisplayed(true);
panel.setDisplayDebugInfo(true);
panel.setImageSizeDisplayed(true);
panel.setMirrored(true);
jPanel5.add(panel);
jPanel5.setVisible(true);
I call all of this in my main class constructor. Just after other netbeans componenst are loaded. When I add example it's working good but then my main layout is loaded and webcam screen in another window. I would like to get it in the same window.
I have seen other topics about adding image to jPanel but it's not working with capturing movie from webcam.
Thanks for help.
But when I tried to display it in my existing jPanel it's not working.
When you add components to a visible GUI the basic code is:
panel.add(...);
panel.revalidate(); // invoke the layout manager
panel.repaint(); // paint components
All component have a default size of (0, 0) when created so there is nothing to paint. You need to invoke the layout manager so the component is given a size/location.
I changed a little my application and now in the middle of main windows is JTabbedPane and I found a solution to my problem. Instead of making Tabs using NetBeans window designer I made it with code.
I made empty JTabbedPane in Netbeans and then add this to code:
final JPanel jPanelCamera = new JPanel();
jTabbedPane1.addTab("Camera", jPanelCamera);
Webcam webcam = Webcam.getDefault();
webcam.setViewSize(WebcamResolution.VGA.getSize());
WebcamPanel webcamPanel = new WebcamPanel(webcam);
webcamPanel.setFPSDisplayed(true);
webcamPanel.setDisplayDebugInfo(true);
webcamPanel.setImageSizeDisplayed(true);
webcamPanel.setMirrored(true);
jPanelCamera.add(webcamPanel);
jPanelCamera.getParent().revalidate();
System.out.println("Camera OK");
I have no idea why earlier when I made component using NetBeans designer it was't working but now it's working good. I think if someone would add this not to JTabbedPane, but to JPanel should also make this panel with code. Not with Netbeans designer and then it should work.

java clickable-through non transparent Component in a transparent clickable-through jframe

OS = Ubuntu; JDK = 1.7.0_10
General:
What I want is something commonly available as desktop widget (e.g. annotate for compiz or gromit), is there a way to do it in Java?
I want to create one jframe or window to be full-screen, transparent, clickable-though and always on top.
Inside the jframe I want to add/remove components (text, images, rectangles..) to be positioned on a specific point of the screen. Those component should be non-trasparent and always on top. If possible they should allow to click through.
Example:
I have several app opened on my desktop.
I want to automatically draw a box around window which is on focus drawing a rectangle around the window, the area of the rectangle should be transparent and clickable-thsough in order to allow me to use my application.
Problems:
I can create a transparent frame which stays on top but is not clickable-through, but The component what I will ad to the frame will be in any case transparent.
JFrame frame = new JFrame("MyFrame");
frame.setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setLocation(0,0);
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.setAlwaysOnTop(true);
//frame.getRootPane().putClientProperty("apple.awt.draggableWindowBackground", false); //apple
frame.getContentPane().setLayout(new BorderLayout());
System.setProperty("sun.java2d.noddraw", "true");
AWTUtilities.setWindowOpaque(frame, false);
AWTUtilities.setWindowOpacity(frame, 0.0f);
JLabel label = new JLabel("Hello NOT transparent label");
label.setOpaque(true);
label.setBackground(new Color(255, 0, 0));
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
I can make the frame transparent and clickable-through by setting the IconImage with a transparent image loaded from URL.
This works if the image is loaded from an URL but not if I load the image from a local file (why?!?).
Also in this case, when I add a component to the frame is not displayed.
try {
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(new URL("http://i.imgur.com/xtZK0.png")));
} catch (MalformedURLException e) {e.printStackTrace();}
I tried to add a JFXPanel but no success, I tried adding the component to the GlassPane but no success..
After one week of intensive tests and search I hope someone can give me a solution or the right hint.
Thanks.

Jasper Viewer set title

Here is how I show the Jasper report in swing applications.
JasperViewer.viewReport(jasperPrint, true);
Then when the report is viewed, the report viewer's title is "Jasper Viewer" . I want to change it and set my own title name. My other question is how to directly send the report to the print without viewing.Please give any sample code.Thank you
What I normally do is :
JasperViewer jv = new JasperViewer(jasperPrint, false);
jv.setTitle("Report-Title");
jv.setVisible(true);
This works because, JasperViewer is a JFrame -
public class JasperViewer extends JFrame{
//...
}
JasperViewer.viewReport(...)is a wrapper class that creates and shows a JasperViewer JFrame with a JRViewer panel.
Using this method you can't access the underlying JFrame, so you can't change the frame title.
You can try to create your own JasperViewer frame using the public constructor, and then set the title using the setTitle(...) method.
Another and recommended approach is to create a custom JDialog with a JRViewer panel.
To print your report without viewing:
final JRPrintServiceExporter exporter = new JRPrintServiceExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
exporter.exportReport();

How to merge JOptionPane and Frame into one

Currently I have a very basic file viewer working as follows :
- in JOptionPane I browse for files, and set some variables to display (colors, line connecting etc)
- previous windows loads a frame with drawn points
alt text http://img190.imageshack.us/img190/4443/104bu.jpg
Code :
http://paste.pocoo.org/show/220066/
Now I'd like to throw it into one window, with JMenu for selecting files and changing display parameters. How to get started ? Should I rewrite everything to JDialog ?
alt text http://img684.imageshack.us/img684/5264/lab10db.jpg
If you want the JOPtionPane as a child of the main JFrame, then add it as a child. Of course it will then cover your dots. Hence you will have to not draw your dots directly in the content pane of the main JFrame, but rather in a new JPanel that you have also added to the JFRame's content pane. Let me know if I've understood the question whatsoever.
Here's some code for how I see the setup (I'm leaving the layout problem out of this, partly because it depends on what you want to see):
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(new Dimension(400,400));
frame.getContentPane().add(new JOptionPane());
JPanel canvasForDots = new JPanel();
frame.getContentPane().add(canvasForDots);
You might also like to look at How to Use Tool Bars and How to Use Menus. ImageApp is a typical implementation that associates menu items with the corresponding Action instances.
private class ClearAction extends AbstractAction {…}
private class ImageOpenAction extends AbstractAction {}
private Action openAction = new ImageOpenAction("Open");
private Action clearAction = new ClearAction("Clear");
…
JMenu menu = new JMenu("File");
menu.add(new JMenuItem(openAction));
menu.add(new JMenuItem(clearAction));
This related example adds the file chooser directly to the main frame. Here's a more elaborate example of connecting lines and shapes using the same principles.

Categories

Resources