Hi everyone,
I want to use a MultiLineLabel to display text in a GenericDialog. Using a listener I want to change that comment (the MultiLineLabel) depending on a choice in one of the other elements. However, there is no method to set the text of the MultiLineLabel. Until now, I used a Label, where after adding the message " " to the GenericDialog, I changed the text which then contains "\n"'s before calling showDialog(). This way I got a Label which has multiple lines and a setText() method that I can call from the Listener. I just recently figured out that this works only under Mac, not Windows and Linux. Bummer. Is there any way to set the text of a MultiLineLabel without using reflections? Alternatively, I could use multiple normal Labels, but then the distance between them is far too large, it does not look like a block. If this all doesn't work, I will extend the MultiLineLabel class and add it as my own element. But if there is a more elegant way would be nice. Thanks a lot, Stephan --- Dr. Stephan Preibisch HFSP Fellow Robert H. Singer / Eugene Myers lab Albert Einstein College of Medicine / HHMI Janelia Farm / MPI-CBG email: [hidden email] / [hidden email] / [hidden email] web: http://www.preibisch.net/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
On May 8, 2014, at 1:38 PM, Stephan Preibisch wrote:
> Hi everyone, > > I want to use a MultiLineLabel to display text in a GenericDialog. Using a listener I want to change that comment (the MultiLineLabel) depending on a choice in one of the other elements. However, there is no method to set the text of the MultiLineLabel. The latest ImageJ daily build (1.49a19) adds a setText() method to the MultiLineLabel class. The following example plugin, which is recordable, demonstrates how to use this method. -wayne import ij.*; import ij.plugin.PlugIn; import ij.gui.*; import java.awt.*; public class Dialog_Test implements PlugIn, DialogListener { private String divider = "----------"; private String defaultText = "abcdef"; private static GenericDialog gd; String text; public void run(String arg) { showDialog(); IJ.log("Text: "+text); } void showDialog() { gd = new GenericDialog("Test Dialog"); gd.addStringField("Text: ", defaultText); gd.addMessage(divider+"\n"+defaultText+"\n"+divider); gd.addDialogListener(this); gd.showDialog(); } public boolean dialogItemChanged(GenericDialog gd, AWTEvent e) { text = gd.getNextString(); MultiLineLabel label = (MultiLineLabel)gd.getMessage(); label.setText(divider+"\n"+text+"\n"+divider); return true; } } > Until now, I used a Label, where after adding the message " " to the GenericDialog, I changed the text which then contains "\n"'s before calling showDialog(). This way I got a Label which has multiple lines and a setText() method that I can call from the Listener. I just recently figured out that this works only under Mac, not Windows and Linux. Bummer. > > Is there any way to set the text of a MultiLineLabel without using reflections? > Alternatively, I could use multiple normal Labels, but then the distance between them is far too large, it does not look like a block. > > If this all doesn't work, I will extend the MultiLineLabel class and add it as my own element. But if there is a more elegant way would be nice. > > Thanks a lot, > Stephan > --- > > Dr. Stephan Preibisch > HFSP Fellow > Robert H. Singer / Eugene Myers lab > > Albert Einstein College of Medicine / HHMI Janelia Farm / MPI-CBG -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Thanks a lot Wayne!
> On May 8, 2014, at 1:38 PM, Stephan Preibisch wrote: > >> Hi everyone, >> >> I want to use a MultiLineLabel to display text in a GenericDialog. Using >> a listener I want to change that comment (the MultiLineLabel) depending >> on a choice in one of the other elements. However, there is no method to >> set the text of the MultiLineLabel. > > The latest ImageJ daily build (1.49a19) adds a setText() method to the > MultiLineLabel class. The following example plugin, which is recordable, > demonstrates how to use this method. > > -wayne > > import ij.*; > import ij.plugin.PlugIn; > import ij.gui.*; > import java.awt.*; > > public class Dialog_Test implements PlugIn, DialogListener { > private String divider = "----------"; > private String defaultText = "abcdef"; > private static GenericDialog gd; > String text; > > public void run(String arg) { > showDialog(); > IJ.log("Text: "+text); > } > > void showDialog() { > gd = new GenericDialog("Test Dialog"); > gd.addStringField("Text: ", defaultText); > gd.addMessage(divider+"\n"+defaultText+"\n"+divider); > gd.addDialogListener(this); > gd.showDialog(); > } > > public boolean dialogItemChanged(GenericDialog gd, AWTEvent e) { > text = gd.getNextString(); > MultiLineLabel label = (MultiLineLabel)gd.getMessage(); > label.setText(divider+"\n"+text+"\n"+divider); > return true; > } > > } > > >> Until now, I used a Label, where after adding the message " " to the >> GenericDialog, I changed the text which then contains "\n"'s before >> calling showDialog(). This way I got a Label which has multiple lines >> and a setText() method that I can call from the Listener. I just >> recently figured out that this works only under Mac, not Windows and >> Linux. Bummer. >> >> Is there any way to set the text of a MultiLineLabel without using >> reflections? >> Alternatively, I could use multiple normal Labels, but then the distance >> between them is far too large, it does not look like a block. >> >> If this all doesn't work, I will extend the MultiLineLabel class and add >> it as my own element. But if there is a more elegant way would be nice. >> >> Thanks a lot, >> Stephan >> --- >> >> Dr. Stephan Preibisch >> HFSP Fellow >> Robert H. Singer / Eugene Myers lab >> >> Albert Einstein College of Medicine / HHMI Janelia Farm / MPI-CBG > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |