DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

+ Reply to Thread
Results 1 to 4 of 4

Thread: Gui Help

  1. #1
    Join Date
    Feb 2005
    Posts
    24

    Gui Help

    Hi guys

    Im designing a GUI for my java and what I have done is added the buttons to the EAST side and a pic to the Centre. I like a border to split the button. Something in between to splits them apart so it looks much nicer. Can anyone suggest something to me and give me a example coding of how it shud be done.

    Thanx

  2. #2
    Join Date
    Nov 2004
    Location
    Norway
    Posts
    1,560
    This is one way. The mainPanel can be substistuted
    w. a JFrame (just remember to use the
    getContentPane().add() instead of add()): The gridlayout
    in the eastPanel is set up w. 0 rows and 1 column, this
    makes the components line up in a column like big fat buttons.

    Code:
      // declare components
      JPanel mainPanel = new JPanel();
      JPanel eastPanel = new JPanel();
      JPanel jPanel2 = new JPanel();
      JPanel jPanel3 = new JPanel();
      JPanel jPanel4 = new JPanel();
      BorderLayout borderLayout1 = new BorderLayout();
      GridLayout gridLayout1 = new GridLayout();
      GridLayout gridLayout2 = new GridLayout();
      GridLayout gridLayout3 = new GridLayout();
      GridLayout gridLayout4 = new GridLayout();
      JButton jButton1 = new JButton();
      JButton jButton2 = new JButton();
      JButton jButton3 = new JButton();
    
      // set up gui
      private void jbInit() throws Exception {
        mainPanel.setLayout(borderLayout1);
        eastPanel.setBorder(BorderFactory.createEtchedBorder());
        eastPanel.setPreferredSize(new Dimension(90, 10));
        eastPanel.setLayout(gridLayout1);
        gridLayout1.setColumns(1);
        gridLayout1.setRows(0);
        jPanel4.setBorder(BorderFactory.createEtchedBorder());
        jPanel4.setLayout(gridLayout2);
        jPanel3.setBorder(BorderFactory.createEtchedBorder());
        jPanel3.setLayout(gridLayout3);
        jPanel2.setBorder(BorderFactory.createEtchedBorder());
        jPanel2.setLayout(gridLayout4);
        jButton1.setText("jButton1");
        jButton2.setText("jButton2");
        jButton3.setText("jButton3");
        mainPanel.add(eastPanel, BorderLayout.WEST);
        eastPanel.add(jPanel4, null);
        jPanel4.add(jButton1, null);
        eastPanel.add(jPanel3, null);
        jPanel3.add(jButton2, null);
        eastPanel.add(jPanel2, null);
        jPanel2.add(jButton3, null);
      }
    eschew obfuscation

  3. #3
    Join Date
    Feb 2005
    Posts
    24

    Unhappy

    Hiyeahh

    That code for me was too complexed loll

    Heres what I have done at the moment.

    I have added the buttons to the west putting the labels inbetween the buttons to give them space in the centre I have added a picture in the centre ..Now thought about button b being used for the border between the buttons and the pic but I tried and I cant do it..I left you my code at the moment which u can mess around with to produce what I what…..

    Thank you a lot


    public SalesControlFrame() {



    setLayout(new BorderLayout());
    setBackground(Color.blue);
    setTitle("Sales Control & Stock");
    setSize(new Dimension(600, 500));


    leftPanel = new Panel(new GridLayout(9,2 ));
    add(leftPanel, BorderLayout.WEST);

    topPanel = new Panel(new GridLayout(2,1 ));
    add(topPanel, BorderLayout.NORTH);


    //Image Setting

    pic = new ImageIcon("G:/img/vz.jpg");
    picture1 = new JLabel(pic);
    rightPanel = new Panel();

    //Setting the image on the right

    rightPanel = new Panel(new GridLayout(1,1));
    add(rightPanel, BorderLayout.CENTER);

    centerPanel = new Panel(new GridLayout(1,1));
    add(centerPanel, BorderLayout.EAST);



    //Adding New Buttons
    viewButton= new Button("Moniter Material");
    cuButton= new Button("Customer Order");
    spButton = new Button("Reorder From Suppliers");
    Exit = new Button("Exit");
    b = new Button("");


    //Adding labels for space on the buttons
    JLabel A = new JLabel("");
    JLabel B = new JLabel("");
    JLabel C = new JLabel("");
    JLabel D = new JLabel("");
    JLabel cpLabel = new JLabel("Company Address");
    JLabel uslabel = new JLabel( "User Details");

    cpLabel.setFont(new Font("Arial", Font.BOLD, 28));
    uslabel.setFont(new Font("Arial", Font.BOLD, 28));

    leftPanel.add(D);
    leftPanel.add(cuButton);
    leftPanel.add(A);
    leftPanel.add(spButton);
    leftPanel.add(B);
    leftPanel.add(viewButton);
    leftPanel.add(C);
    leftPanel.add(Exit);
    leftPanel.add(b);
    rightPanel.add(picture1);


    topPanel.add(cpLabel);
    topPanel.add(uslabel);

  4. #4
    Join Date
    Nov 2004
    Location
    Norway
    Posts
    1,560
    Too complicated, hmm ?
    You are using labels as 'bricks' , also you are using a mixture of swing and awt components (JLabel, Panel) ??

    Your solution ends up w. buttons that resize as you
    resize the frame (and so does my last solution )
    and that's not entirely kosher, in fact its a nono in gui
    construction.

    Try this;

    Set the preferred size of the buttonspanel to say 120,10 (the height has no effect as it is stretched by
    the borderlayout). Set the buttonspanel layout to:
    FlowLayout(FlowLayout.LEFT). Set a fixed width for your
    buttons so only one fits on each row. This will make the
    buttons align left, stacked above each other and give
    some right-space between the buttons and the picture.
    And dont use labels for spacing here, use this:

    FlowLayout leftPanFlow=new FlowLayout(FlowLayout.LEFT);
    leftPanFlow.setVgap(30); //<- gives 30 pixels vertical gap.
    leftPanel=new JPanel(leftPanFlow);
    this.getContentPane().add(leftPanel,BorderLayout.WEST);
    leftPanel.setPreferredSize(new Dimension(120,10));
    // add the buttons
    leftPanel.add(someButton);
    .
    .
    this.validate();

    The buttons should not change position or size as you
    resize the frame, and this solution prevents that.
    eschew obfuscation

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


Top DevX Stories

Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL


Sponsored Links