Dealing with Swing Layouts

I have a collection of small panels with fixed size (around 50x50), and a main panel with size around 600x480.
At run time I need to show this collection of panels on my main panel.
Based on your experience, what would be the best layout to show them on my main panel?
I have tried setting up a GridLayout on my main panel, but my small panels always got resized to fill my main panel, no matter how I tried to stablish the number of rows (length % rows == 0? 0 : 1 + len depending on my collection size.
Also tried with a flowlayout, but when I added a JSCrollPanel, instead of adding new rows, my scrollpanel kept adding them on the same line :( I even enforced my scroller to
Is this the correct behaviour? Am I doing something wrong? (I'm sure I do :))
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER;
public class JClass extends JFrame{
    private JPanel panel;
    private JScrollPane scroll;
    protected JClass() {
        panel = new JPanel();
        scroll = new JScrollPane(panel);
        scroll.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
        JPanel menu  = new JPanel();
        JButton but  = new JButton("show");
        but.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
               display(5);
        BorderLayout layout = new BorderLayout();
        FlowLayout layout2 = new FlowLayout();
        layout2.setAlignment(FlowLayout.LEFT);
        panel.setLayout(layout2);
        menu.add(but);
        this.setPreferredSize(new Dimension(640,480));
        this.setLayout(layout);
        this.add(scroll, BorderLayout.CENTER);
        this.add(menu,BorderLayout.WEST);
        pack();       
    public void display(int n){
        JButton button;      
        for(int i = 0; i < n; i++){
            button = new JButton();
            button.setPreferredSize(new Dimension(30,30));
            this.panel.add(button);
        this.validate();
        this.repaint();     
    public static void main(String args[]) {
        JClass app = new JClass();
        app.setDefaultCloseOperation(EXIT_ON_CLOSE);
        app.setVisible(true);
}

Thanks Camickr.
And just for the sake of it, do you think is there a way to do it with GridLayout? I mean, fixing the number of columns to three, but without resizing the small panels I will be adding. Maybe by fixing the preferredSize of the panel with the gridlayout to the small panels width * 3 + something?
In my previous iteration I tried it but this content panel would always take my maximum space, thus expanding my small panels... :(

Similar Messages

  • Reversing with swing? Help!

    Alright, before you guys flip out and say post it to the swing forum, why does the swing forum say read only? Now I have searched the forum but cannot find anything that deals with swing and the kind I am doing. So if you can provide some advice or some help, it would be greatly appreciated. This is my last hurdle to tackle in my school project.
    I tried a StringBuffer approach but it kept giving me an error saying it would not work with JTextArea? Maybe the code was wrong?
    This needs to take the text on the screen which I have and post it reversed when the "Reverse" button is clicked... I have been searching the web and these forums and all the different reverse methods and theories are confusing me, I try to copy them and get them to work but I just keep receiving errors. What is the best way to do this with using GUI?
    else if (actionCommand.equals("Reverse"))
              reverseMemo = theText.getText();
    /*Is this where I would put the reverse code?*/          
    theText.setText(reverseMemo);
         }Thanks,
    Jess

    Just write a method to reverse the text
    read the string in reverse and start plugging the values into a string buffer (inside a loop of course)
    then display results:
    textfield.setText(stringbuffer.toString());
    This is my last hurdle to tackle in my school project.I highly doubt it.
    The fact you are asking this question shows me you did not learn anything about Java much less computer science. Your question has nothing to do with swing.

  • Best way to deal with different screen sizes

    Hi !
    We have been a small company using java for our client ( http://www.topbridge.com ) . The Swing client has used panels with absolute positions so the client would fit in 800x600 screen. Since java is 'run everywhere' we would like to rewrite it so it also possible to run on smaller screens ( zaurus ) . Any suggestions about best way to do this? Is there any layout method that would try to fit everything within a given screen size?
    Thank you!

    The Swing client has used panels with absolute positions
    Well there's your problem: your UI was written by someone who didn't know how to write a UI.
    Always sketch your UI on paper, break it into logical sections rather than dealing with everything in one go (your code should break down accordingly in any case) and for each of those sections determine where space should be allocated when resizing - from this, the decision of which layout managers to use will fall out naturally.

  • Unable to run jar file without lib folder containing swing-layout-1.0.jar

    I have done my project through NetBeans 5.0. Eventhough I have copied my lib foloder containing swing-layout-1.0.jar inside my project.jar, I am still unable to run my project.jar in other systems, it is creating an error as Could not find the main class. Program will exit. But if I copy the lib foloder containing swing-layout-1.0.jar in the same path as the project.jar, then my project.jar is running.
    But I want to give only the project.jar for other users and not also lib foloder containing swing-layout-1.0.jar each time.
    Could someone please help me with this.

    When you develop GUI applications using the Netbeans you may endup using netbeans specific jar files in your auto generated code.
    And when you build jar files with netbeans it copy the third party jar files used in a application in to a lib folder in the same directory as the jar file of your project. And then set a class path entry to those jar files in your project jar file's manifest file.
    So if you want to redistribute the package you have to redistribute your jar file and every thing in the lib folder in with the same directory structure.
    If you want to change the structure you will have to change the class path to suit the new structure.

  • I'm trying to transfer music from iTunes on an old PC that uses an external storage device to a new PC (Windows 7) that will use that same external storage device.  I am also dealing with new iTunes 11.  How do I do this??  What folder does iTunes use?

    I'm trying to transfer music from iTunes on an old PC (Windows Vista Home Basic) that uses an external storage device to store the files to a new PC (Windows 7 Starter) that will use that same external storage device.  I am also dealing with the new iTunes 11.  How can I accomplish this successfully?    What folder does iTunes use to store the data in?  I've tried several things.  Home Sharing caused duplicates but not all songs or apps transfered.  It is a large library! I've tried just setting the path in the Advanced Tab of iTunes preferences of the new computer with the external drive connected the same as the path when the external drive is connected to the old computer.  This was the best solution so far but still a few artists missing and some apps. Any suggestions?

    Here are typical layouts for the iTunes folders:
    With iTunes 11 you might also have a Home Videos folder inside iTunes Media.
    In the simplest cases you copy the entire iTunes folder from <User's Music> on the source computer to <User's Music> on the target machine, install iTunes, and it "just works"TM.
    If the media folder (inside the red outline) has been split out to a separate location then you can copy the library folder (outside the red outline) as before and connect the drive holding the media so that it has exactly the same path as before. If the drive appears as D: on one system and E: on the other then the library won't be able to find the media.
    The crucial file is iTunes Library.itl - this contains a record of the tracks that have been added to the library, ratings, play counts, playlists etc.
    See also: Make a split library portable.
    tt2

  • How to deal with images stored in oracle

    hi,
    can anyone help me to solve this issue please:
    in fact i am developping a swing based standalone application based on a TCP/IP client-server connection, so the point is to display on my frame for each student his information and also his personal picture
    first step : storing the personal picture into the oracle database from a specefic frame that allows to specify each NEW student's profile and his photo.
    step 2: as needed, a specefic frame allows to retrieve all the information related to a student and his photo to ( in a jlabel or other swing componenet)
    how to deal with this storing and then the retriving from the oracle DB
    any help please!

    If I understand well your problem, you need your client java application to store and retrive information from an oracle DB.
    This can be done via JDBC.
    Here's the tutorial:
    http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html
    Look at
    http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html#JDBC2018
    for storing and retriving binary data (like java serialized objects (Images for example))

  • Swing Layouts

    Why is laying out component sizes in Swing so incredibly opaque?
    Each time I build a swing interface it seems to be a series of visual compromises, and ending up in more TLOC than any other part of even a complex application. Changing one value seems to always mess up everything else or have unexpected side-effects! Half the time, changing the most obvious values have no effect at all. I frequently end up just clearing out ALL layout hints/settings from the UI and starting from scratch with a GridBagLayout just to get something fairly sensible. Yes I am frustrated.
    If any part of the increasingly wonderful java platform needs a major review, then it is the Swing layout APIs or at least the documentation of the exact behaviour and dependencies of methods that influence sizes.
    Either I am stupid (which I would be most willing to accept), or component layout/orientation/sizing/behaviour is very, very far from intuitive.
    I'd love to become a Swing-super-guru-expert, but as I am expected to be an expert on so many other things, I simply do not have the time to spend on it. I believe that it would be much better for the platform as a whole if the UI platform was made more intuitive or at the very least much better documented.
    I am seriously considering moving to SWT, as I just don't have the time or energy to figure all this out.
    /k1

    Oh btw - all the GUI editors I've ever used tend to compound the problems by introducing their own
    quirks, dependencies and restrictions! That's been my experience to date which is why I've steered clear of them.
    As far as swing architecture not being mature. I think the architecture gives you the building blocks, from there any layout mangers can be created. Maybe Sun could provide a few more LayoutManagers but I suspect their tactic is to provide the minimum from which you can do everything so keeping the API size down.
    So don't restrict yourself to those available in the JDK. Have a google and get some freebies. There are all sorts of alternative Layouts there. The fact that these are freely available elsewhere is quite likely why SUn haven't bothered to introduce more themselves some that spring to mind are TableLayout, GridLayout, ProportionalLayout, LabelledLayout
    To my mind it's the beauty of swing that allows it to be so easily extended in this way.
    SpringLayout came in in JDK1.4 http://www.onjava.com/pub/a/onjava/2002/09/11/layout.html but I'm not familiar with that as yet as I write systems that must be JDK1.3 compatible. It looks like a better replacement for GridBagLayout there are probably alternative versions of this to be found on the web..

  • How to deal with Memory Leaks, that are caused by Binding

    Hi, I recently noticed (huge?) memory leaks in my application and suspect bindings to be the cause of all the evil.
    I made a little test case, which confirms my suspicion:
    import javafx.application.Application;
    import javafx.beans.property.SimpleStringProperty;
    import javafx.beans.property.StringProperty;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    public class TestAppMemoryLeak extends Application {
        public static void main(String[] args) {
            launch(args);
        @Override
        public void start(Stage stage) throws Exception {
            VBox root = new VBox();
            Button button = null;
            for (int i = 0; i < 100000; i++) {
                button = new Button();
                button.textProperty().bind(text);
                button.textProperty().unbind(); // if you don't call this, you can notice the increased memory of the java process.
            root.getChildren().add(button);
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        private StringProperty text = new SimpleStringProperty("test");
    }Now the problem is, HOW can I know, when a variable is no longer needed or overwritten by a new instance.
    Just an example:
    I have a ListView with a Cell Factory. In the updateItem method, I add a ContextMenu. The textProperty of each MenuItem is bound to a kind of global property, like in the example above. I have to do it in the updateItem method, since the ContextMenu differs depending on the item.
    So every time the updateItem method is called a new ContextMenu is created, which binds some properties, but the old context menus remain in memory.
    I guess there could be many more example.
    How can I deal with it?

    I've dealt with this situation and created a Jira issue for it, but I also have a work-around that is a bit unwieldy but works. I'll share it with you.
    The bug that deals with this (in part atleast): http://javafx-jira.kenai.com/browse/RT-20616
    The solution is to use weak invalidation listeners, however they are a bit of a pain to use as you cannot do it with something simplistic as "bindWeakly"... and you need to keep a reference around to the wrapped listener otherwise it will just get garbage collected immediately (as it is only weakly referenced). Some very odd bugs can surface if weak listeners disappear randomly because you forgot to reference them :)
    Anyway, see this code below, it shows you some code that is called from a TreeCell's updateItem method (I've wrapped it in some more layers in my program, but it is essentially the same as an updateItem method):
    public class EpisodeCell extends DuoLineCell implements MediaNodeCell {
      private final WeakBinder binder = new WeakBinder();
      @Override
      public void configureCell(MediaNode mediaNode) {
        MediaItem item = mediaNode.getMediaItem();
        StringBinding episodeRange = MapBindings.selectString(mediaNode.dataMapProperty(), Episode.class, "episodeRange");
        binder.unbindAll();
        binder.bind(titleProperty(), MapBindings.selectString(mediaNode.dataMapProperty(), Media.class, "title"));
        binder.bind(ratingProperty(), MapBindings.selectDouble(mediaNode.dataMapProperty(), Media.class, "rating").divide(10));
        binder.bind(extraInfoProperty(), Bindings.when(episodeRange.isNull()).then(new SimpleStringProperty("Special")).otherwise(episodeRange));
        binder.bind(viewedProperty(), item.viewedProperty());
        subtitleProperty().set("");
    }This code makes use of a class called WeakBinder -- it is a helper class that can make Weak bindings and can keep track of them. When you call unbindAll() on it, all of the bindings it created before are released immediately (although they will also disappear when the Cell itself is garbage collected, which is possible because it only makes weak references).
    I've tested this extensively and it solves the problem of Cells keeping references to objects with much longer life cycles (in my case, the MediaNode passed in has a longer lifecycle than the cells and so it is important to bind weakly to it). Before this would create huge memory leaks (crashing my program within a minute if you kept refreshing the Tree)... now it survives hours atleast and the Heap usage stays in a fixed range which means it is correctly able to collect all garbage).
    The code for WeakBinder is below (you can consider it public domain, so use it as you see fit, or write your own):
    package hs.mediasystem.util;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javafx.beans.InvalidationListener;
    import javafx.beans.Observable;
    import javafx.beans.WeakInvalidationListener;
    import javafx.beans.property.Property;
    import javafx.beans.value.ObservableValue;
    public class WeakBinder {
      private final List<Object> hardRefs = new ArrayList<>();
      private final Map<ObservableValue<?>, WeakInvalidationListener> listeners = new HashMap<>();
      public void unbindAll() {
        for(ObservableValue<?> observableValue : listeners.keySet()) {
          observableValue.removeListener(listeners.get(observableValue));
        hardRefs.clear();
        listeners.clear();
      public <T> void bind(final Property<T> property, final ObservableValue<? extends T> dest) {
        InvalidationListener invalidationListener = new InvalidationListener() {
          @Override
          public void invalidated(Observable observable) {
            property.setValue(dest.getValue());
        WeakInvalidationListener weakInvalidationListener = new WeakInvalidationListener(invalidationListener);
        listeners.put(dest, weakInvalidationListener);
        dest.addListener(weakInvalidationListener);
        property.setValue(dest.getValue());
        hardRefs.add(dest);
        hardRefs.add(invalidationListener);
    }Let me know if this solves your problem.

  • Tool bar dock problem with grid layout

    I have a tool bar with grid layout. When i dock it to vertical location(west or east) the buttons inside tool bar keep one row. I want to know how do i do to make the buttons arraged vertically like the tool bar with default layout when dock it at west or east position.

    I had started a custom layout manager for toolbars a few months ago that I found a little easier to use than the default BoxLayout. I just modified it to allow optionally matching the button sizes (width, height, or both), so you can get the same effect as GridLayout. Note that this one doesn't collapse the toolbar like the one in the other thread. Here's the source code as well as a simple test app to demonstrate how to use it. Hope it helps.
    //     TestApp.java
    //     Test application for ToolBarLayout
    // package ***;
    import java.awt.*;
    import javax.swing.*;
    public class TestApp extends JFrame
         /////////////////////// Main Method ///////////////////////
         public static void main(String[] args)
              try { UIManager.setLookAndFeel(
                   UIManager.getSystemLookAndFeelClassName()); }
              catch(Exception ex) { }     
              new TestApp();
         public TestApp()
              setTitle("ToolBarLayout Test");
              setDefaultCloseOperation(EXIT_ON_CLOSE);
              setSize(400, 300);
              setLocationRelativeTo(null);
              JToolBar tbar = new JToolBar();
              ToolBarLayout layout = new ToolBarLayout(tbar);
              // Comment these two lines out one at a time to see
              // how they affect the toolbar's layout...
              layout.setMatchesComponentDepths(true);
              layout.setMatchesComponentLengths(true);
              tbar.setLayout(layout);
              tbar.add(new JButton("One"));
              tbar.add(new JButton("Two"));
              tbar.add(new JButton("Three"));
              tbar.addSeparator();
              tbar.add(new JButton("Musketeers"));
              Container c = getContentPane();
              c.setLayout(new BorderLayout());
              c.add(tbar, BorderLayout.NORTH);
              setVisible(true);
    //     ToolBarLayout.java
    //     A simple layout manager for JToolBars.  Optionally resizes buttons to
    //     equal width or height based on the maximum preferred width or height
    //     of all components.
    // package ***;
    import java.awt.*;
    import javax.swing.*;
    public class ToolBarLayout implements LayoutManager, SwingConstants
         private JToolBar     oToolBar = null;
         private boolean     oMatchDepth = false;
         private boolean     oMatchLength = false;
         private int          oGap = 0;
         public ToolBarLayout(JToolBar toolBar)
              oToolBar = toolBar;
         public ToolBarLayout(JToolBar toolBar, boolean matchDepths)
              oToolBar = toolBar;
              oMatchDepth = matchDepths;
         public ToolBarLayout(JToolBar toolBar,
                        boolean matchDepths,
                             boolean matchLengths)
              oToolBar = toolBar;
              oMatchDepth = matchDepths;
              oMatchLength = matchLengths;
         // If true, all buttons in the row will be sized to
         // the same height (assuming horizontal orientation)
         public void setMatchesComponentDepths(boolean match)
              oMatchDepth = match;
         // If true, all buttons in the row will be sized to
         // the same width (assuming horizontal orientation)
         public void setMatchesComponentLengths(boolean match)
              oMatchLength = match;
         public void setSpacing(int spacing)
              oGap = Math.max(0, spacing);
         public int getSpacing()
              return oGap;
         ////// LayoutManager implementation //////
         public void addLayoutComponent(String name, Component comp) { }
         public void removeLayoutComponent(Component comp) { }
         public Dimension minimumLayoutSize(Container parent)
              return preferredLayoutSize(parent);
         public Dimension preferredLayoutSize(Container parent)
              synchronized (parent.getTreeLock())
                   int orientation = getOrientation();
                   Component[] components = parent.getComponents();
                   int w = 0, h = 0;
                   int totalWidth = 0, totalHeight = 0;
                   int maxW = getMaxPrefWidth(components);
                   int maxH = getMaxPrefHeight(components);
                   Dimension ps = null;
                   if (orientation == HORIZONTAL)
                        for (int i=0; i < components.length; i++)
                             ps = components.getPreferredSize();
                             if (oMatchLength) w = maxW;
                             else w = ps.width;
                             if (oMatchDepth) h = maxH;
                             else h = ps.height;
                             if (components[i] instanceof JSeparator)
                                  w = ps.width;
                                  h = 0;
                             totalWidth += w;
                             if (i < components.length - 1)
                                       totalWidth += oGap;
                             totalHeight = Math.max(totalHeight, h);
                   else
                        for (int i=0; i < components.length; i++)
                             ps = components[i].getPreferredSize();
                             if (oMatchDepth) w = maxW;
                             else w = ps.width;
                             if (oMatchLength) h = maxH;
                             else h = ps.height;
                             if (components[i] instanceof JSeparator)
                                  w = 0;
                                  h = ps.height;
                             totalHeight += h;
                             if (i < components.length - 1)
                                       totalHeight += oGap;
                             totalWidth = Math.max(totalWidth, w);
                   Insets in = parent.getInsets();
                   totalWidth += in.left + in.right;
                   totalHeight += in.top + in.bottom;
                   return new Dimension(totalWidth, totalHeight);
         public void layoutContainer(Container parent)
              synchronized (parent.getTreeLock())
                   int orientation = getOrientation();
                   Component[] components = parent.getComponents();
                   Insets in = parent.getInsets();
                   int x = in.left, y = in.top;
                   int w = 0, h = 0, maxW = 0, maxH = 0;
                   Dimension ps = null;
                   if (orientation == HORIZONTAL)
                        maxW = getMaxPrefWidth(components);
                        maxH = Math.max( getMaxPrefHeight(components),
                             parent.getHeight() - in.top - in.bottom );
                        for (int i=0; i < components.length; i++)
                             ps = components[i].getPreferredSize();
                             if (oMatchLength) w = maxW;
                             else w = ps.width;
                             if (oMatchDepth) h = maxH;
                             else h = ps.height;
                             if (components[i] instanceof JSeparator)
                                  w = ps.width;
                                  h = maxH;
                             components[i].setBounds(
                                  x, y + (maxH-h)/2, w, h);
                             x += w + oGap;
                   else
                        maxH = getMaxPrefHeight(components);
                        maxW = Math.max( getMaxPrefWidth(components),
                             parent.getWidth() - in.left - in.right );
                        for (int i=0; i < components.length; i++)
                             ps = components[i].getPreferredSize();
                             if (oMatchDepth) w = maxW;
                             else w = ps.width;
                             if (oMatchLength) h = maxH;
                             else h = ps.height;
                             if (components[i] instanceof JSeparator)
                                  w = maxW;
                                  h = ps.height;
                             components[i].setBounds(
                                  x + (maxW-w)/2, y, w, h);
                             y += h + oGap;
         //// private methods ////
         private int getOrientation()
              if (oToolBar != null) return oToolBar.getOrientation();
              else return HORIZONTAL;
         private int getMaxPrefWidth(Component[] components)
              int maxWidth = 0;
              int componentWidth = 0;
              Dimension d = null;
              for (int i=0; i < components.length; i++)
                   d = components[i].getPreferredSize();
                   componentWidth = d.width;
                   if (components[i] instanceof JSeparator)
                        componentWidth = Math.min(d.width, d.height);
                   maxWidth = Math.max(maxWidth, componentWidth);
              return maxWidth;
         private int getMaxPrefHeight(Component[] components)
              int maxHeight = 0;
              int componentHeight = 0;
              Dimension d = null;
              for (int i=0; i < components.length; i++)
                   d = components[i].getPreferredSize();
                   componentHeight = d.height;
                   if (components[i] instanceof JSeparator)
                        componentHeight = Math.min(d.width, d.height);
                   else maxHeight = Math.max(maxHeight, componentHeight);
              return maxHeight;

  • How does Java Compiler deal with circular dependence?

    A simple example is in the most basic class Object, you have a toString() method which uses String class, but, a String is an Object class first. So when the compiler encounters this circular dependence situation, how does it deal with it?
    Anyone has some ideas?

    I studied this a while ago... I think I know the answer, but you can still confirm it.
    Suppose you said javac Object.java, the first thing it would do is load the file into memory and layout its functions. Then it will search for dependencies. Finding String on in the classpath, it loads that up into memory too. It then searches for String's dependencies and so on...

  • Swing layout error

    i have posted this in the jdbc forum but i have not recieved any responsed yet so im posting it here in the hope that one of you might
    have a solution.
    I searched this forum, and i was surprised to find that none had this problem. I ll get to the point.
    I am using netbeans, so i downloaded the mysql driver , added it to the project library and compiled and ran my program . I did not have any problems.
    so i triedt to run the app on a different machine and it gave me the
    popular swing layout error. I fixed that error. by adding some lines to the xml file mentioned in the netbeans faq.
    Now it gives me another popular error when i try to run the .jar file from command line on the same machine i developed the app
    the errror is
    System Exception Output : com.mysql.jdbc.Driver
    is there a way to avoid this error like the swing layout error
    thanks in advance

    So, nothing whatsoever to do with a Swing layout error, then :o)

  • How to deal with the rule that do not use "object" class to declear a class

    I run my flex project in sonar. And there is a rule "Do not use Object class ".
    I just want to know how to deal with this problem.
    I mean, when I try to write a base class, I don't know which kind of class will be transfered in by reference, which type I can declear instead of "object"?

    Check out this example:
    The moment I put in the code >> box1.addItem("hello"); << and run the application, the BusNameListener is fired. Hope this makes sense.
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class JFrameExample {
    private JComboBox box1;
    public JFrameExample() {
    box1 = new JComboBox();
    box1 .setMinimumSize(new Dimension(300, 24));
    box1 .setPreferredSize(new Dimension(300, 24));
    box1.addActionListener(new BusNameListener());
    box1.addItem("hello");
    JFrame f = new JFrame("This is a test");
    f.setSize(400, 150);
    Container content = f.getContentPane();
    // content.setBackground(Color.white);
    content.setLayout(new FlowLayout());
    content.add(box1);
    f.setVisible(true);
    class BusNameListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    JComboBox cb = (JComboBox) e.getSource();
    String item = (String) cb.getSelectedItem();
    if (item != null) {
    JOptionPane.showInputDialog(null,
    "Specify...", "File Import",
    JOptionPane.OK_CANCEL_OPTION);
    }

  • **URGENT** - PRODUCTION ISSUE with Planning Layout

    Hi,
    we've a manual planning layout that uses both macros SAPAFTERDATAPUT and SAPBEFOREDATAGET with custom code developed in these 2 macros to switch data between "SEM-BPS 1" and "New" sheet.
    Layout has 11 characteristics in lead columns and around 40 keyfigures in data columns (dynamic).
    Using macros, we are formatting SEM-BPS 1 sheet to display all dynamic data coumns in a single page of New sheet.
    for this, our custom macro formats each row of SEM-BPS1 into 10 rows of New sheet by reducing 40 columns into 4 (columns is what matters for our users but not rows).
    We tried this for 40 rows of data. (means, 40 rows 40 columns). Our Custom macro formed 400 rows and 4 columns into New Sheet and even switched data between "SEM-BPS 1" and "New" sheet as per our macro coding. here, we can execute all planning functions. fine till this point
    Now, we have a problem when dealing with 100 rows. (means, 100 rows 40 columns). <b>Our custom macro had formed 1000 rows and 4 columns as expected with accurare data. </b>
    at this point, When we started running any planning function or even when we just click on check button (check button runs both SAP macros, I assume), <b>system is freezing up doing nothing. each time, we had to kill the process. when we looked into CPU usage, we can see that excel.exe process is using 99% of CPU.</b>
    Appreciate if any one can share experinces on this.
    <b><u>Note: </b></u>
    1. By disabling custom macros, we  executed 100 rows 40 columns w/o any issues.
    2. when executed custom macros outside of SAP for 1000 rows 4 columns, both macros took just 2 seconds to switch data between sheets.

    Hi there
    This is the option Jeff was referring to. I see it in my own RoboHelp version 10. As we aren't seeing it in your screen capture, I'm wondering if this was an option that was added via a service release you haven't installed.
    I do suppose another possibility would be that you are using RoboHelp for Word and perhaps that isn't an option with that application.
    Cheers... Rick

  • Custom ui component with default layout

    Hello,
    I am trying to develop custom swing components with default layout set.
    Both component class and its BeanInfo are written with NetBeans 6.1
    However, when trying to put this custom swing component into interface builder (matisse) of
    NetBeans 6.1, the default layout is always replaced with GroupLayout.
    Is there any way to correctly specify default layout manager used in a custom
    swing component?
    thanks a lot!

    Hi Jacek
    You can embed your custom component with IFrame element in WebDynpro view. IFrame element loads a content by URL which can be bound to controller's context. You can store your custom HTML content in MIME folder of the WebDynpro component. At runtime you can get the URL to the MIME content and initialize the IFrame with the URL.
    However, IFrame element is being reloaded by WebDynpro framework too often during each request/response cycle. This is a disadvantage of the solution.
    BR, Siarhei

  • Can I build a GUI application with SWING only without [import java.awt.*;]

    I have seen several threads (in forums), books and tutorials about SWING and I see that they all mix SWING with AWT (I mean they import both Swing and AWT in their code).
    The conclusion that comes out is:
    It is good to learn about SWING and forget AWT as it won't be supported later. I have decided to do so, and I never include <<import java.awt.*;>> in my code.
    But I see that you cannot do much without <<import java.awt.*;>>. For example this line which changes the background color:
    <<frame.getContentPane().setBackground(Color.red)>>
    works only with <<import java.awt.*;>>. I have seen that codes in this and other forums import awt to change the background. Why is that?
    After all, I wonder, what can I do;
    My question is, can I change the background (and of course do all other things listener, buttons etc) without using <<import java.awt.*;>>.
    I would like to avoid using <<import java.awt.*;>> and using awt since my program will not work later.
    In addition, I believe there is no point to learn awt, which later will not exist.
    I know, I must have misunderstood something. I would appreceate it very much, if anyone could give me even a short answer.
    Thank you in advance,
    JMelsi

    Since swing is a layer on top of awt, AWT will exist for as long as swing does.
    If sun does ever remove AWT they will have to replace it something else swing can layer on to and you will probably only have to replace your import statements.
    The main difference is the way there drawn to the screen.
    You can do custom drawing on swing components but you can't on AWT.
    If your using a desktop PC system it's probably best to use swing just in case you wish to do some custom drawing.
    awt uses less memory than swing and is faster but swing can be extended. awt comes only as standard.
    Say for example you wish to implement a JButton with a ProgressBar below the button text, this can be done with swing!

Maybe you are looking for