using #search parameter on a JWebBrowser grays out display field - java

I´ve already searched for related posts on stack, but didn´t find quite the right answer;
Im using THIS to display a .pdf file in my frame.
Now I want to use the JWebBrowser.navigate()+ (filePath + "#search=anyString") to search this .pdf file for the specific string.
Unfortunately I´m unable to reload the JWebBrowser afterwards. So the correct filepath is submitted (checked that in the pdf adress bar), but the JWebBrowser turns gray and nothing happens.
When using the navigate() to load another file and afterwards navigate to the old file again, it works just fine.
I tried revalidate(), repaint() and stuff like this but I cant get this to work.
Example:
btnTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
browser.navigate(filePath + "#search=flower");
browser.revalidate();
browser.repaint();
}
});
I appreciate any kind of advice!
Thanks!

meanwhile I've found a solution, although it might be not the perfect one:
You can just remove the JWebbrowser object from your current Frame/Panel and just add it again.
This way it will work just fine.
Just in case someone is having a related problem to this one.
Greetz

Related

JFileChooserDialog shows filetype filter when set to directory only

Problem statement
A directory chooser dialog is prepared. No files are allowed to be chosen, only directories. In order to do so, the JFileChooser is prepared:
private void prepareFileManagement()
{
// unrelated code
...
// export filters
this.exportFileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
this.exportFileChooser.setAcceptAllFileFilterUsed( false );
}
Dialog filters work as intended so far. However when displaying the dialog, there is still a "Files of type" label and the corresponding combobox shown:
Question
It does not seem to make sense to display the filetype section, when JFileChooser.DIRECTORIES_ONLY is set. Is there an API available to the JFileChooser to update the displayed dialog accordingly?
While I have found solutions, where components are iterated and identified using a barrage of instanceof, this seems like something that should be done by an API and not by tearing the Component apart.
Is there an API for the JFileChooser I have missed? How to solve this correctly?
Meta
I have looked for similiar questions on StackOverflow, the closest one in my opinion is this:
Java - Remove component (Files of Type) from JFileChooser

Why is my JFrame Icon not changing from the default java icon?

I have tried several solutions for changing the icon of my application, but none have worked! I do not get any error when i do the following but it still won't change!? Please, can someone tell me where I am going wrong because i don't see any error, and I am not receiving any error either!
I even made sure that the icon I want to use is a 20x20 pixel icon, because I read somewhere that is the maximum size for an icon.
frame.setIconImage(
new ImageIcon(getClass().getResource("/images/bfc_icon.png")).getImage());
Why is this not working? Any help would be greatly appreciated!
EDIT:
I am testing if the file exists, turns out it does but it still is not being set as the application icon...why is this??
URL url = getClass().getResource("src/images/bfc_icon.png");
if (url == null)
System.out.println( "Could not find image!" );
else
frame.setIconImage(new ImageIcon(url).getImage());
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try {
// TODO add your handling code here:
Image img=ImageIO.read(getClass().getResource("ur path"));
this.setIconImage(img);
} catch (IOException ex) {
}
this will work
It seems a bit too late, but I hope this helps.
This problem probably happens when you called the setIconImage() before you initialize the JFrame.
I also had this problem with the code below (w/ Eclipse IDE):
setIconImage(Toolkit.getDefaultToolkit().getImage(Apps.class.getResource("/ico.png")));
initComponents();
I accidentally solved the problem by swapping these two so it looks like this:
initComponents();
setIconImage(Toolkit.getDefaultToolkit().getImage(Apps.class.getResource("/ico.png")));
You should try to do it as well, at least call the setIconImage() after the JFrame has initialized if you didn't use any window builder tool.
Cheers!
In my case, I just simply copied the picture I want to use as my icon to the project folder and not the src folder (source code folder) and it worked.

How to implement printing in chrome pacakaged app created from GWT Application.?

I have integrated the GWT application with Chrome packaged app with help of DirectLinkerinstaller like the code below:
public class CSPCompatibleLinker extends DirectInstallLinker {
#Override
protected String getJsInstallLocation(LinkerContext context) {
return "com/google/gwt/core/ext/linker/impl/installLocationMainWindow.js";
}
}
But now I want to call print function from Chrome packaged app. When I call window.print() it allows me to print current window, but I need to open a new separate window and print that.
Could you anyone please help me in this?
I can't answer anything about GWT or DirectLinkerinstaller, but here's an answer about Chrome Apps, assuming that's what you're asking about:
You use the chrome.app.window.create API to create a window. Then, you can call the print method for that window.
In my apps, I seldom want to print what's in a window, but rather something I've generated specifically for printing. For that, I create a PDF with jsPDF (Google it), which works well. Then I display the PDF in a window, and let the user print the PDF (or save it).

Release java applet resources when browsing to a URL via code

I have a Java applet that presents a JButton that allows users to navigate to another URL (which has a feedback form).
Problem: when I navigate to the form in Safari from the applet, typing into the form is garbled or impossible (only every 10th keystroke or so is actually entered).
Manually terminating the Java Web Plug-in for Safari fixes this immediately. I assume that I am somehow not releasing resources properly in my applet. I am aware that cleanup should be performed in the stop() method, but I'm not sure what resources I am failing to release that could cause this kind of behavior.
Here is the code that browses to the URL:
final JButton btnLaunch = new JButton("Go to survey");
final myJApplet mj = this;
btnLaunch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String url ="www.mywebform.example";
try {
getAppletContext().showDocument(new URL(url));
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
finally {
SwingUtilities.getWindowAncestor(btnLaunch).dispose();
mj.stop();
}
}
My best guess is that somehow Safari is mishandling resources by passing them to some Java ActionListener. However, including:
btnLaunch.removeActionListener(this);
in a finally block does not seem to help. I have other action listeners in my applet that I know are not explicitly destroyed, but I was under the assumption that generally this wasn't a problem as they are supposed to be disposed of automatically.
EDIT: Checking through my code, it seems I only have MouseListener or ActionListeners (on JButtons). So it is even more baffling that I'm having a keyboard issue. I tried manually removing them all in the stop method of the applet (which I manually call in the finally block), but it didn't help. MouseEvents and ActionEvents shouldn't continue to run upon navigating away from the page!
EDIT 2: Further information: having the applet open a new window which then contains a link to the final survey also does not work. However, making the link open in a new window (using html's target="_blank") seems to correct the problem. So for a work around, I have the applet direct users to a splash page which thanks them and then presents a link for the final survey. This is annoyingly kludgey, and doesn't answer the original question, but for now it seems like what I will be going with.

CodeName One, Action event not working- need explanation

I'm trying to get and action event to fire on my HelloWorld. im using the GUI and when it auto creates the:
protected void onMain_Button1Action(Component c, ActionEvent event) {
// If the resource file changes the names of components this call will break notifying you that you should fix the code
super.onMain_Button1Action(c,event);
}
I know its not going to work because there is no void of the same type in the superclass.
protected void onMain_Button1Action(Component c, ActionEvent event) {
// If the resource file changes the names of components this call will break notifying you that you should fix the code
Dialog.show("Test", "it works", "OK",null);
}
And I'm still getting nothing. I've looked for other tutorials on how to use codenames as one but i cant find any. And I dont get the one made by the author. if any one can toss me a line i would be most appreciative.
You need to save the resource file in the designer and NOT delete the call to super. If you are using Eclipse you should refresh the project after saving in the designer using F5.

Categories

Resources