How to assign the different heights to different Panels in JAVA - java

import javax.swing.*;
import java.awt.*;
class calculator{
public static void main(String args[])
{
JFrame frame=new JFrame("Simple Calculator");
JPanel mainpanel=new JPanel();
JPanel tfpanel=new JPanel();
JTextField tf=new JTextField();
tfpanel.add(tf);
tfpanel.setSize(200,40);
tfpanel.setLayout(new GridLayout(0,1));
This is the second panel which consits of 'Delete' Button and 'Clear' Button
JPanel panel2=new JPanel();
JButton buttondel=new JButton("Delete");
JButton buttonclear=new JButton("Clear");
panel2.add(buttondel);
panel2.add(buttonclear);
panel2.setSize(200,60);
panel2.setLayout(new GridLayout(0,2,10,10));
panel2.setBorder(BorderFactory.createEmptyBorder(10,0,10,0));
JPanel buttonpanel=new JPanel();
JButton b1=new JButton("9");
JButton b2=new JButton("8");
JButton b3=new JButton("7");
JButton b4=new JButton("/");
JButton b5=new JButton("6");
JButton b6=new JButton("5");
JButton b7=new JButton("4");
JButton b8=new JButton("*");
JButton b9=new JButton("3");
JButton b10=new JButton("2");
JButton b11=new JButton("1");
JButton b12=new JButton("-");
JButton b13=new JButton("0");
JButton b14=new JButton(".");
JButton b15=new JButton("=");
JButton b16=new JButton("+");
buttonpanel.add(b1);
buttonpanel.add(b2);
buttonpanel.add(b3);
buttonpanel.add(b4);
buttonpanel.add(b5);
buttonpanel.add(b6);
buttonpanel.add(b7);
buttonpanel.add(b8);
buttonpanel.add(b9);
buttonpanel.add(b10);
buttonpanel.add(b11);
buttonpanel.add(b12);
buttonpanel.add(b13);
buttonpanel.add(b14);
buttonpanel.add(b15);
buttonpanel.add(b16);
buttonpanel.setSize(200,220);
buttonpanel.setLayout(new GridLayout(0,4,10,10));
mainpanel.add(tfpanel);
mainpanel.add(panel2);
mainpanel.add(buttonpanel);
mainpanel.setLayout(new GridLayout(0,1));
mainpanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
frame.add(mainpanel);
frame.setSize(300,300);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
In the above example, I have created the three panels, and I have assigned all of them different heights. But all the three panels are taking more than assigned heights.
How to assign the different heights to different panels ?

Firstly: Instead of setSize() better use setPreferredSize() for your Panels
tfpanel.setPreferredSize(new Dimension(200,40));
panel2.setPreferredSize(new Dimension(200,60));
buttonpanel.setPreferredSize(new Dimension(200,120));
Secondly don't use GridLayout for your mainpanel because it makes all its components of same size. You could simply leave this line out
//mainpanel.setLayout(new GridLayout(0,1));

Related

How to add vertical space between JButton in BoxLayout?

I have panel with 2 buttons in BoxLayout. What i want is to add vertical space between the buttons.
Here is my code:
frame = new JFrame("FreshPos baza podataka");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
JPanel panel = new JPanel();
panel.setBounds(new Rectangle(0, 5, 0, 0));
panel.setAlignmentY(Component.BOTTOM_ALIGNMENT);
frame.getContentPane().add(panel, BorderLayout.WEST);
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder( BorderFactory.createEmptyBorder(10,10,10,10) );
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("New button");
panel.add(btnNewButton_2);
Add an invisible vertical component to the panel in between the two buttons:
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
panel.add(Box.createVerticalStrut(50));
JButton btnNewButton_2 = new JButton("New button");
panel.add(btnNewButton_2);

GridLayout/BorderLayout Not Working

I need to make a program that ends up looking like this:
My code so far is what's posted and I can't seem to wrap my head around how to make this look exactly like the image I provided. I just don't really know what else I can do, I've tried looking around for solutions, but I can't manage to combine that information with this to make it all work together.
So, I hope somebody else can help me here, it'd be greatly appreciated! :D
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
/**
This class demonstrates how JPanels can be nested
inside each region of a content pane governed by
a BorderLayout manager.
*/
public class BorderPanelWindow extends JFrame
{
/**
Constructor
*/
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayout(3,3));
JPanel panel5 = new JPanel();
panel5.setLayout(new GridLayout(3,3));
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
JPanel panel8 = new JPanel();
JPanel panel9 = new JPanel();
JPanel panel10 = new JPanel();
// Create five buttons.
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");
JButton button4 = new JButton("Button 4");
JButton button5 = new JButton("Button 5");
JButton button6 = new JButton("Button 6");
JButton button7 = new JButton("Button 7");
JButton button8 = new JButton("Button 8");
JButton button9 = new JButton("Button 9");
JButton button10 = new JButton("Button 10");
//Add buttons to panel4
panel4.add(button1);
panel4.add(button2);
panel4.add(button3);
panel4.add(button4);
panel4.add(button5);
panel4.add(button6);
// Add the buttons to the panels.
panel7.add(button7);
panel8.add(button8);
panel9.add(button9);
panel10.add(button10);
// Add the five panels to the content pane.
add(panel7, BorderLayout.NORTH);
add(panel8, BorderLayout.SOUTH);
add(panel9, BorderLayout.EAST);
add(panel4, BorderLayout.WEST);
//add(panel10, BorderLayout.WEST);
add(panel5, BorderLayout.CENTER);
// Pack and display the window.
pack();
setVisible(true);
}
/**
The main method creates an instance of the
BorderPanelWindow class, causing it to display
its window.
*/
public static void main(String[] args)
{
new BorderPanelWindow();
}
}
Update
So this is what I have so far in what I think an answer suggested me to do. Like I said I can't see my panel4 when I have button 10 on there as well, I'm sure it's something I'm just not seeing but still.
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
/**
This class demonstrates how JPanels can be nested
inside each region of a content pane governed by
a BorderLayout manager.
*/
public class BorderPanelWindow extends JFrame
{
/**
Constructor
*/
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayout(3,3));
JPanel panel5 = new JPanel();
panel5.setLayout(new GridLayout(3,3));
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
JPanel panel8 = new JPanel();
JPanel panel9 = new JPanel();
JPanel panel10 = new JPanel();
// Create five buttons.
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");
JButton button4 = new JButton("Button 4");
JButton button5 = new JButton("Button 5");
JButton button6 = new JButton("Button 6");
JButton button7 = new JButton("Button 7");
JButton button8 = new JButton("Button 8");
JButton button9 = new JButton("Button 9");
JButton button10 = new JButton("Button 10");
JButton button11 = new JButton("Button 11");
JButton button12 = new JButton("Button 12");
JButton button13 = new JButton("Button 13");
JButton button14 = new JButton("Button 14");
JButton button15 = new JButton("Button 15");
JButton button16 = new JButton("Button 16");
JButton button17 = new JButton("Button 17");
JButton button18 = new JButton("Button 18");
//Add buttons to panel4
panel4.add(button1);
panel4.add(button2);
panel4.add(button3);
panel4.add(button4);
panel4.add(button5);
panel4.add(button6);
//Add buttons to panel5
panel5.add(button11);
panel5.add(button12);
panel5.add(button13);
panel5.add(button14);
panel5.add(button15);
panel5.add(button16);
panel5.add(button17);
panel5.add(button18);
// Add the buttons to the panels.
panel7.add(button7);
panel8.add(button8);
panel9.add(button9);
panel10.add(button10);
// Add the five panels to the content pane.
add(panel7, BorderLayout.NORTH);
add(panel8, BorderLayout.SOUTH);
add(panel9, BorderLayout.EAST);
add(panel4, BorderLayout.WEST);
add(panel10, BorderLayout.WEST);
add(panel5, BorderLayout.CENTER);
// Pack and display the window.
pack();
setVisible(true);
}
/**
The main method creates an instance of the
BorderPanelWindow class, causing it to display
its window.
*/
public static void main(String[] args)
{
new BorderPanelWindow();
}
}
Update2
So now I polished it up a little bit and tried to do what you said but now it looks even worse so there's gotta be something I'm just not getting entirely lol. Hopefully you can see my mistake.
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
/**
This class demonstrates how JPanels can be nested
inside each region of a content pane governed by
a BorderLayout manager.
*/
public class BorderPanelWindow extends JFrame
{
/**
Constructor
*/
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(3,3));
JPanel panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayout(3,3));
// Create five buttons.
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");
JButton button4 = new JButton("Button 4");
JButton button5 = new JButton("Button 5");
JButton button6 = new JButton("Button 6");
JButton button7 = new JButton("Button 7");
JButton button8 = new JButton("Button 8");
JButton button9 = new JButton("Button 9");
JButton button10 = new JButton("Button 10");
JButton button11 = new JButton("Button 11");
JButton button12 = new JButton("Button 12");
JButton button13 = new JButton("Button 13");
JButton button14 = new JButton("Button 14");
JButton button15 = new JButton("Button 15");
JButton button16 = new JButton("Button 16");
JButton button17 = new JButton("Button 17");
JButton button18 = new JButton("Button 18");
//Add buttons to panel1
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
//Add buttons to panel2
//Add the buttons to panel3
panel3.add(button7);
panel3.add(button8);
panel3.add(button9);
panel3.add(button10);
//Add the buttons to panel4
panel4.add(button11);
panel4.add(button12);
panel4.add(button13);
panel4.add(button14);
panel4.add(button15);
panel4.add(button16);
panel4.add(button17);
panel4.add(button18);
// Add the five panels to the content pane.
add(panel1, BorderLayout.WEST);
add(panel2, BorderLayout.EAST);
add(panel3, BorderLayout.EAST);
add(panel4, BorderLayout.CENTER);
// Pack and display the window.
pack();
setVisible(true);
}
/**
The main method creates an instance of the
BorderPanelWindow class, causing it to display
its window.
*/
public static void main(String[] args)
{
new BorderPanelWindow();
}
}
Update3
Okay, I'm a little further now the big issue is that buttons 11-18 aren't coming up in the middle of buttons 7-10.
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
/**
This class demonstrates how JPanels can be nested
inside each region of a content pane governed by
a BorderLayout manager.
*/
public class BorderPanelWindow extends JFrame
{
/**
Constructor
*/
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(2,3));
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(4,2));
JPanel panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayout(1,2));
// Create five buttons.
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");
JButton button4 = new JButton("Button 4");
JButton button5 = new JButton("Button 5");
JButton button6 = new JButton("Button 6");
JButton button7 = new JButton("Button 7");
JButton button8 = new JButton("Button 8");
JButton button9 = new JButton("Button 9");
JButton button10 = new JButton("Button 10");
JButton button11 = new JButton("Button 11");
JButton button12 = new JButton("Button 12");
JButton button13 = new JButton("Button 13");
JButton button14 = new JButton("Button 14");
JButton button15 = new JButton("Button 15");
JButton button16 = new JButton("Button 16");
JButton button17 = new JButton("Button 17");
JButton button18 = new JButton("Button 18");
//Add buttons to panel1
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
//Add buttons to panel2
//Add the buttons to panel3
panel3.add(button7, BorderLayout.NORTH);
panel3.add(button8, BorderLayout.SOUTH);
panel3.add(button9, BorderLayout.EAST);
panel3.add(button10, BorderLayout.WEST);
//Add the buttons to panel4
panel4.add(button11);
panel4.add(button12);
panel4.add(button13);
panel4.add(button14);
panel4.add(button15);
panel4.add(button16);
panel4.add(button17);
panel4.add(button18);
// Add the five panels to the content pane.
add(panel1, BorderLayout.WEST);
add(panel2, BorderLayout.CENTER);
add(panel3, BorderLayout.EAST);
add(panel4, BorderLayout.CENTER);
// Pack and display the window.
pack();
setVisible(true);
}
/**
The main method creates an instance of the
BorderPanelWindow class, causing it to display
its window.
*/
public static void main(String[] args)
{
new BorderPanelWindow();
}
}
I'd make that with 3 grid layouts and a border layout. E.G.
GridLayout for left/right sections (each section a panel)
GridLayout for buttons 1-6
BorderLayout for buttons 7-10 + panel in CENTER for..
GridLayout for buttons 11-18
Update
Your edit 3 was very close, note extra comments and changes in code to see this:
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
/**
This class demonstrates how JPanels can be nested
inside each region of a content pane governed by
a BorderLayout manager.
*/
public class BorderPanelWindow extends JFrame
{
/**
Constructor
*/
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // better
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(2,3));
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(4,2));
JPanel panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
JPanel panel4 = new JPanel();
// we need as many rows as needed (0) in 2 columns (2)
panel4.setLayout(new GridLayout(0,2));
// Create five buttons.
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");
JButton button4 = new JButton("Button 4");
JButton button5 = new JButton("Button 5");
JButton button6 = new JButton("Button 6");
JButton button7 = new JButton("Button 7");
JButton button8 = new JButton("Button 8");
JButton button9 = new JButton("Button 9");
JButton button10 = new JButton("Button 10");
JButton button11 = new JButton("Button 11");
JButton button12 = new JButton("Button 12");
JButton button13 = new JButton("Button 13");
JButton button14 = new JButton("Button 14");
JButton button15 = new JButton("Button 15");
JButton button16 = new JButton("Button 16");
JButton button17 = new JButton("Button 17");
JButton button18 = new JButton("Button 18");
//Add buttons to panel1
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
//Add buttons to panel2
//Add the buttons to panel3
panel3.add(button7, BorderLayout.PAGE_START);
panel3.add(button8, BorderLayout.PAGE_END);
panel3.add(button9, BorderLayout.LINE_END);
panel3.add(button10, BorderLayout.LINE_START);
//Add the buttons to panel4
panel4.add(button11);
panel4.add(button12);
panel4.add(button13);
panel4.add(button14);
panel4.add(button15);
panel4.add(button16);
panel4.add(button17);
panel4.add(button18);
// Add panel4 to the CENTER of panel3
panel3.add(panel4, BorderLayout.CENTER);
// Add the five panels to the content pane.
add(panel1, BorderLayout.LINE_START);
add(panel2, BorderLayout.CENTER);
add(panel3, BorderLayout.LINE_END);
//add(panel4, BorderLayout.CENTER); // AND DON'T ADD IT HERE!
// Pack and display the window.
pack();
setVisible(true);
}
/**
The main method creates an instance of the
BorderPanelWindow class, causing it to display
its window.
*/
public static void main(String[] args)
{
new BorderPanelWindow();
}
}

I added buttons to a frame but they still won't show up

I'm writing a program that does the following:
Create a frame and set its layout to FlowLayout.
* Create two panels and add them to the frame.
* Each panel contains three buttons. The panel uses FlowLayout. Here is my code:
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
class Flow{
public static void main(String[] args){
JFrame f = new JFrame("Testing out these JPanels");
f.setSize(400, 100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setLayout(new FlowLayout());
JButton b = new JButton("button 1");
JButton butt = new JButton("button 2");
JButton bug = new JButton("button 3");
JButton button = new JButton("button 4");
JButton button5 = new JButton("button 5");
JButton button6 = new JButton("button 6");
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.setVisible(true);
p.setSize(200, 100);
JPanel pnl = new JPanel();
pnl.setLayout(new FlowLayout());
pnl.setSize(200,100);
p.add(b);
p.add(butt);
p.add(bug);
pnl.add(button5);
pnl.add(button);
pnl.add(button6);
f.add(button5);
}
}
When I run the program, the frame shows up but not my buttons or panels. Can someone please explain what I'm doing wrong?
You should add the JPanel p and pnl to JFrame
// f.add(button5); Comment this line button5 is already added to pnl
// Now add the two panel with JFrame.
f.add(p);
f.add(pnl);
And, for proper layout manager, go through this tutorial.
You need to add you JPanel to your JFrame
f.getcontentpane().add(p);
f.getcontentpane().add(pnl);
and then call setVisible() on the frame.
f.setVisible(true);
It is not showing because you set the visibility of frame to true before you add the buttons, therefore it only rendered the frame without buttons and by the time you re-size the JFrame it will show the buttons because it is rendered again.
solution:
set the visibility of the frame after you add the buttons
JFrame f = new JFrame("Testing out these JPanels");
f.setSize(400, 100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setLayout(new FlowLayout());
JButton b = new JButton("button 1");
JButton butt = new JButton("button 2");
JButton bug = new JButton("button 3");
JButton button = new JButton("button 4");
JButton button5 = new JButton("button 5");
JButton button6 = new JButton("button 6");
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.setVisible(true);
p.setSize(200, 100);
JPanel pnl = new JPanel();
pnl.setLayout(new FlowLayout());
pnl.setSize(200,100);
p.add(b);
p.add(butt);
p.add(bug);
pnl.add(button5);
pnl.add(button);
pnl.add(button6);
f.add(button5);
f.setVisible(true); //relocated here
You have created the panels, but have forgot to add the panels in that frame, exactly the same way you have added the "button 5"
try including this in code:
f.add(p);
f.add(pnl);

Adding Jpanel containing JButton disturbs the structure of frame

class Frame extends JFrame{
public Frame()
{
JFrame jf= new JFrame("Student Admission");
jf.setLayout(new GridLayout(5,1));
JPanel jpn= new JPanel();
JPanel enr= new JPanel();
enr.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel enrno= new JLabel("Enrollment Number",JLabel.LEFT);
JTextField enrnoinput=new JTextField(3);
enr.add(enrno);
enr.add(enrnoinput);
jf.add(enr);
JLabel name= new JLabel("Student's Name",JLabel.LEFT);
JTextField nameinput=new JTextField(60);
jpn.add(name);
jpn.add(nameinput);
jf.add(jpn);
JPanel jpfn= new JPanel();
JLabel fname= new JLabel("Fathers's Name",JLabel.LEFT);
JTextField fnameinput=new JTextField(60);
jpfn.add(fname);
jpfn.add(fnameinput);
jf.add(jpfn);
JPanel hscp= new JPanel();
hscp.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel hscper= new JLabel("Hsc Percentage",JLabel.LEFT);
JTextField hscperinput=new JTextField(3);
hscp.add(hscper);
hscp.add(hscperinput);
jf.add(hscp);
JPanel sscp= new JPanel();
sscp.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel sscper= new JLabel("Ssc Percentage",JLabel.LEFT);
JTextField sscperinput=new JTextField(3);
sscp.add(sscper);
sscp.add(sscperinput);
jf.add(sscp);
//After Adding this panel the frame's structure get disturbed
JPanel buttonPanel= new JPanel();
JButton save= new JButton("Save");
JButton cancel= new JButton("Cancel");
buttonPanel.add(save);
buttonPanel.add(cancel);
jf.add(buttonPanel);
jf.setResizable(false);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
Before Adding buttonPanel
After adding buttonPanel
I want to add button panel in the Middle-Bottom of the frame how can I do that?
Your grid layout only accounts for 5 components, so it's screwing up everything when you use 6. Add the buttonPanel to the sscp panel and then add the sscp panel to the overall Frame.
JPanel sscp= new JPanel();
sscp.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel sscper= new JLabel("Ssc Percentage",JLabel.LEFT);
JTextField sscperinput=new JTextField(3);
sscp.add(sscper);
sscp.add(sscperinput);
JPanel buttonPanel= new JPanel();
JButton save= new JButton("Save");
JButton cancel= new JButton("Cancel");
buttonPanel.add(save);
buttonPanel.add(cancel);
//change here
sscp.add(buttonPanel);
jf.add(sscp);

how to allign buttons vertical in java swing

I want to align JButton instances vertically. Can you please suggest a way to do so?
Jbutton jb= new Jbutton();
Jbutton jb1= new Jbutton();
JButton jb3= new JBUtton();
Refer the code below:
private void prepareUI() {
this.setUndecorated(true);
//Preparing control buttons
JButton jb = new MyButton("-");
jb.setActionCommand("Min");
jb.addActionListener(this);
jb1 = new MyButton("[]");//delete this line
jb1.setActionCommand("Max");
jb1.addActionListener(this);
JButton jb2 = new MyButton("X");
jb2.setActionCommand("Close");
jb2.addActionListener(this);
//Preparing panel
JPanel buttonPanel = new JPanel();
BoxLayout boxLayout1 = new BoxLayout(buttonPanel, BoxLayout.Y_AXIS);
buttonPanel.setLayout(boxLayout1);
buttonPanel.add(Box.createVerticalGlue());
buttonPanel.add(jb);
buttonPanel.add(jb1);
buttonPanel.add(jb2);
jb.setFocusable(false);
jb1.setFocusable(false);
jb2.setFocusable(false);
JPanel panel=new JPanel();
BoxLayout boxLayout = new BoxLayout(panel, BoxLayout.LINE_AXIS);
panel.setLayout(boxLayout);
panel.add(Box.createHorizontalGlue())

Categories

Resources