Issues with ScrollBar and JTable selection - java

Issues:
Need the scrollbar to increase to the panel height even when maximized.
When clicked on 1 or 2, need to change the selection color to some other color.
When clicked on 'x', the font should change.
Code:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.border.MatteBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.Color;
import javax.swing.border.CompoundBorder;
import java.awt.Dimension;
public class Sample1 extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Sample1 frame = new Sample1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Sample1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
final JPanel panel = new JPanel();
panel.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
contentPane.add(panel, BorderLayout.WEST);
Vector str = new Vector<>();
Vector v = new Vector();
v.add("1");
v.add("x");
Vector v1 = new Vector();
v1.add("2");
v1.add("x");
str.addElement(v);
str.addElement(v1);
DefaultTableModel mo = new DefaultTableModel(str,str);
final JTable list = new JTable(mo);
list.setBorder(new CompoundBorder());
list.setBackground(new Color(238, 232, 170));
list.setShowGrid(false);
// list.setListData(str);
list.getColumnModel().getColumn(1).setPreferredWidth(10);
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setPreferredSize(new Dimension(70, 300));
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
list.setTableHeader(null);
list.setFillsViewportHeight(true);
panel.add(scrollPane);
final JPanel panel_1 = new JPanel();
panel_1.setBorder(new MatteBorder(1, 1, 1, 1, (Color) new Color(0, 0, 0)));
contentPane.add(panel_1, BorderLayout.CENTER);
panel_1.setLayout(new CardLayout(0, 0));
JPanel panel_2 = new JPanel();
panel_1.add(panel_2, "1");
JLabel lblNewLabel = new JLabel("First");
panel_2.add(lblNewLabel);
JPanel panel_3 = new JPanel();
panel_1.add(panel_3, "2");
JLabel lblNewLabel_1 = new JLabel("Second");
panel_3.add(lblNewLabel_1);
list.addMouseListener(new MouseAdapter() {
#Override
public void mouseClicked(MouseEvent e){
int row = list.getSelectedRow();
int column = list.getSelectedColumn();
CardLayout cl = (CardLayout) panel_1.getLayout();
cl.show(panel_1,list.getValueAt(row, column).toString());
}
});
// list.add
}
}

Need the scrollbar to increase to the panel height even when maximized.
JPanel panel = new JPanel(new BorderLayout());
This will solve your first problem.

Related

How to add a JButton to a JFrame?

I tried to add a button to the JFrame, but it won't appear for some reason. How do I make it appear?
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.*;
public class GraficoconArreglo extends javax.swing.JFrame {
JPanel pan = (JPanel) this.getContentPane();
JLabel []lab = new JLabel[6];
JTextField []text = new JTextField[6];
Border border = BorderFactory.createLineBorder(Color.pink,1);
JButton b = new JButton("Calculate");
public GraficoconArreglo() {
initComponents();
pan.setLayout(null);
pan.setBackground(Color.GRAY);
for(int i=0; i<lab.length ;i++){
lab[i] = new JLabel();
text[i] = new JTextField();
lab[i].setBounds(new Rectangle(15,(i+1)*40, 60, 25));
lab[i].setText("Data " + (i+1));
lab[i].setBorder(border);
text[i].setBounds(new Rectangle(100,(i+1)*40, 60, 25));
pan.add(lab[i],null);
pan.add(text[i],null);
setSize(200,330);
setTitle("Arrays in forums.");
add(b);
b.addActionListener((ActionListener) this);
}
}
You are creating only one button and adding it to 6 different places. Therefore, you only would see it on the last place you added.
You should add the button to the contentPane, not the JFrame. A working code for this, provided from SwingDesigner from Eclipse Marketplace would be:
public class Window extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Window frame = new Window();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Window() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(170, 110, 89, 23);
contentPane.add(btnNewButton);
}
}

placing JPanel at the center using BorderLayout.centre with spaces of 50 pixels at all 4 directions

I have a JFrame with BorderLayout and I wan to place a single JPanel at the center of JFrame but with spaces of 50 pixels at all directions. That is! when we add a component at the center of BorderLaout then it covers all the space of parent but i want to keep space at all 4 directions. What i did is that i just created panels at north,south ,east and west with 50 pixels width and height. Here is the code.
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Component;
import java.awt.Color;
import java.awt.Dimension;
public class Abc extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Abc frame = new Abc();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Abc() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(10, 50));
contentPane.add(panel, BorderLayout.NORTH);
JPanel panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(50, 10));
contentPane.add(panel_1, BorderLayout.WEST);
JPanel panel_2 = new JPanel();
panel_2.setPreferredSize(new Dimension(10, 50));
contentPane.add(panel_2, BorderLayout.SOUTH);
JPanel panel_3 = new JPanel();
panel_3.setPreferredSize(new Dimension(50, 10));
contentPane.add(panel_3, BorderLayout.EAST);
}
}
What i need is a simple method of creating space at all directions instead of cumbersome job as i did in this code. Is there any method or constructor of BorderLayout to this?
Sample code demonstrating use of EmptyBorder:
package snippet;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import java.awt.Component;
import java.awt.Color;
import java.awt.Dimension;
public class Abc extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Abc frame = new Abc();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Abc() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(50, 50, 50, 50));
contentPane.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.black));
contentPane.add(panel);
setContentPane(contentPane);
}
}

JPanels appear to go off the frame?

I am working on an assignment "of sorts" not a school assignment. Having said that, any ideas would be great.
I am using WindowBuilder in Eclipse and have created a basic form. I have used nested JPanel components on a border layout to create it. For some reason, the panels appear as though they are spilling over the edges of the JFrame. I have the frame dimensions set to (500, 400) and the panels are various sizes, but none greater than 400 wide.
Code:
package SwingAssignment;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import java.awt.GridBagLayout;
import javax.swing.BoxLayout;
import net.miginfocom.swing.MigLayout;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import com.jgoodies.forms.factories.FormFactory;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.border.BevelBorder;
import javax.swing.SwingConstants;
public class Swing_Assignemnt {
private JFrame frmWindowBuilderAssignment;
private JPanel Center_Panel;
private JTextArea textArea;
private JPanel panel_1;
private JPanel panel;
private JTextField textField;
private JPanel panel_2;
private JTextArea txtrTextarea_0;
private JTextArea txtrTextarea_1;
private JPanel panel_3;
private JTextArea txtrTextareasouth;
private JLabel lblNewLabel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Swing_Assignemnt window = new Swing_Assignemnt();
window.frmWindowBuilderAssignment.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Swing_Assignemnt() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmWindowBuilderAssignment = new JFrame();
frmWindowBuilderAssignment.setTitle("Window Builder Assignment");
//frmWindowBuilderAssignment.setBounds(500, 500, 650, 600);
frmWindowBuilderAssignment.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmWindowBuilderAssignment.getContentPane().setLayout(new BorderLayout(0, 0));
frmWindowBuilderAssignment.setVisible(true);
frmWindowBuilderAssignment.setSize(394, 500);
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
//frmWindowBuilderAssignment.pack();
//frmWindowBuilderAssignment.pack();
frmWindowBuilderAssignment.setVisible( true );
panel = new JPanel();
panel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
frmWindowBuilderAssignment.getContentPane().add(panel, BorderLayout.NORTH);
panel.setPreferredSize(new Dimension(200, 40));
panel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
//panel.setBounds(20, 10, 200, 400);
panel.setVisible(true);
JComboBox comboBox = new JComboBox();
panel.add(comboBox);
comboBox.setPreferredSize(new Dimension(125, 20));
comboBox.setVisible(true);
textField = new JTextField();
panel.add(textField);
textField.setColumns(10);
textField.setVisible(true);
panel_2 = new JPanel();
panel_2.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
frmWindowBuilderAssignment.getContentPane().add(panel_2, BorderLayout.CENTER);
panel_2.setLayout(new GridLayout(1, 2, 2, 2));
panel_2.setPreferredSize(new Dimension(200, 400));
panel_2.setVisible(true);
txtrTextarea_0 = new JTextArea();
txtrTextarea_0.setText("textArea_0");
panel_2.add(txtrTextarea_0);
txtrTextarea_0.setPreferredSize(new Dimension(50, 30));
txtrTextarea_0.setVisible(true);
txtrTextarea_1 = new JTextArea();
txtrTextarea_1.setText("textArea_1");
panel_2.add(txtrTextarea_1);
txtrTextarea_1.setVisible(true);
txtrTextarea_1.setPreferredSize(new Dimension(50, 30));
panel_3 = new JPanel();
panel_3.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
frmWindowBuilderAssignment.getContentPane().add(panel_3, BorderLayout.SOUTH);
panel_3.setLayout(new GridLayout(2, 1, 2, 2));
panel_3.setVisible(true);
txtrTextareasouth = new JTextArea();
txtrTextareasouth.setText("textArea_South");
panel_3.add(txtrTextareasouth);
txtrTextareasouth.setVisible(true);
txtrTextareasouth.setPreferredSize(new Dimension(200, 150));
lblNewLabel = new JLabel("Status Label");
panel_3.add(lblNewLabel);
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setPreferredSize(new Dimension(200, 20));
}
}
What it looks like:
After some code changes, this is what I now have, I am not sure how to resize the label at the bottom. It only needs to be about 15 tall.
Don't use setBounds() or setPreferredSize(). Each Swing component should determine its own preferred size and the layout manager will then position the components based on the rules of the layout manager.
Don't use setVisible(true) on all your Swing components (except for the JFrame). By default Swing components are visible.
You should add all the components to the frame before using:
frame.pack()
frame.setVisible( true );
try using
frmWindowBuilderAssignment.pack();
at the End of your initialising Method.
This set all of your Components to their preferred Sizes and adjust the Frame.

icons do not shown in the JButton

why in below code the buttons in the JFrame doesn't appear? everything is ok since it is the same as the tutorial I am studying. even I have copied and pasted the source code from the tutorial but it doesn't work
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class BorderLayoutExampleII extends JFrame {
public BorderLayoutExampleII() {
initUI();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
menubar.add(file);
setJMenuBar(menubar);
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
ImageIcon exit = new ImageIcon("exit.png");
JButton bexit = new JButton(exit);
bexit.setBorder(new EmptyBorder(0 ,0, 0, 0));
toolbar.add(bexit);
add(toolbar, BorderLayout.NORTH);
JToolBar vertical = new JToolBar(JToolBar.VERTICAL);
vertical.setFloatable(false);
vertical.setMargin(new Insets(10, 5, 5, 5));
ImageIcon select = new ImageIcon("drive.png");
ImageIcon freehand = new ImageIcon("computer.png");
ImageIcon shapeed = new ImageIcon("printer.png");
JButton selectb = new JButton(select);
selectb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton freehandb = new JButton(freehand);
freehandb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton shapeedb = new JButton(shapeed);
shapeedb.setBorder(new EmptyBorder(3, 0, 3, 0));
vertical.add(selectb);
vertical.add(freehandb);
vertical.add(shapeedb);
add(vertical, BorderLayout.WEST);
add(new JTextArea(), BorderLayout.CENTER);
JLabel statusbar = new JLabel(" Statusbar");
statusbar.setPreferredSize(new Dimension(-1, 22));
statusbar.setBorder(LineBorder.createGrayLineBorder());
add(statusbar, BorderLayout.SOUTH);
setSize(350, 300);
setTitle("BorderLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
BorderLayoutExampleII ex = new BorderLayoutExampleII();
ex.setVisible(true);
}
});
}
}
check the the file exit.png is in the same folder as your program is or not. You can make sure there is problem in loading image by removing imageicon argument from button, if button is showing then check exit.png files existance
Have a look following code where I commented all the imageIcon's and replaced them by simple strings and I got the out put screen
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class BorderLayoutExampleII extends JFrame {
public BorderLayoutExampleII() {
initUI();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
menubar.add(file);
setJMenuBar(menubar);
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
// ImageIcon exit = new ImageIcon("exit.png");
JButton bexit = new JButton("Exit");
bexit.setBorder(new EmptyBorder(0, 0, 0, 0));
toolbar.add(bexit);
add(toolbar, BorderLayout.NORTH);
JToolBar vertical = new JToolBar(JToolBar.VERTICAL);
vertical.setFloatable(false);
vertical.setMargin(new Insets(10, 5, 5, 5));
// ImageIcon select = new ImageIcon("drive.png");
// ImageIcon freehand = new ImageIcon("computer.png");
// ImageIcon shapeed = new ImageIcon("printer.png");
JButton selectb = new JButton("Select");
selectb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton freehandb = new JButton("Freehand");
freehandb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton shapeedb = new JButton("shapeed");
shapeedb.setBorder(new EmptyBorder(3, 0, 3, 0));
vertical.add(selectb);
vertical.add(freehandb);
vertical.add(shapeedb);
add(vertical, BorderLayout.WEST);
add(new JTextArea(), BorderLayout.CENTER);
JLabel statusbar = new JLabel(" Statusbar");
statusbar.setPreferredSize(new Dimension(-1, 22));
statusbar.setBorder(LineBorder.createGrayLineBorder());
add(statusbar, BorderLayout.SOUTH);
setSize(350, 300);
setTitle("BorderLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
BorderLayoutExampleII ex = new BorderLayoutExampleII();
ex.setVisible(true);
}
});
}
}

Centering image in a JFrame?

I'm creating an about JFrame for my program. I have an icon which I used for the program and I have that show up as the first thing on the about JFrame, but I'm having issues trying to center the image. If I do some kind of centering it screws up the whole alignment of everything else.
I'm trying to have all the JLabels, other than the icon, to be left aligned. Then have the icon aligned to the center.
I had to remove some personal information, whatever I did remove I put them between "[]".
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class About extends JFrame {
public About() {
super("About [PROGRAM]");
setIconImage([PROGRAM].getInstance().setIcon());
JPanel main = new JPanel();
main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
main.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
JLabel icon = new JLabel("", new ImageIcon(getClass().getResource(Constants.ICON_FULL)), JLabel.CENTER);
JLabel name = new JLabel("[PROGRAM]");
JLabel expandedName = new JLabel("[PROGRAM DESCRIPTION]");
JLabel copyright = new JLabel("[COPYRIGHT JUNK]");
JLabel credits = new JLabel("[CREDITS]");
name.setFont(new Font(name.getFont().getFamily(), Font.BOLD, 18));
copyright.setBorder(BorderFactory.createEmptyBorder(0,0,10,0));
main.add(icon);
main.add(Box.createRigidArea(new Dimension(0, 10)));
main.add(name);
main.add(expandedName);
main.add(copyright);
main.add(credits);
add(main);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
}
Consider using some layouts to help you out. Ones that come to mind include BorderLayout with the icon in the BorderLayout.CENTER position. You can stack stuff on one side using a BoxLayout using JPanel that is added to the main BorderLayout-using JPanel.
e.g.,
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
#SuppressWarnings("serial")
public class About extends JDialog {
public static final String IMAGE_PATH = "http://upload.wikimedia.org/wikipedia/"
+ "commons/thumb/3/39/European_Common_Frog_Rana_temporaria.jpg/"
+ "800px-European_Common_Frog_Rana_temporaria.jpg";
public About(JFrame frame) {
super(frame, "About [PROGRAM]", true);
ImageIcon myIcon = null;
try {
URL imgUrl = new URL(IMAGE_PATH);
BufferedImage img = ImageIO.read(imgUrl);
myIcon = new ImageIcon(img);
} catch (MalformedURLException e) {
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JPanel main = new JPanel(new BorderLayout());
main.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
JLabel centerLabel = new JLabel(myIcon);
JLabel name = new JLabel("[PROGRAM]");
JLabel expandedName = new JLabel("[PROGRAM DESCRIPTION]");
JLabel copyright = new JLabel("[COPYRIGHT JUNK]");
JLabel credits = new JLabel("[CREDITS]");
name.setFont(new Font(name.getFont().getFamily(), Font.BOLD, 18));
copyright.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
int eb = 20;
centerLabel.setBorder(BorderFactory.createEmptyBorder(eb, eb, eb, eb));
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS));
leftPanel.add(name);
leftPanel.add(Box.createVerticalGlue());
leftPanel.add(expandedName);
leftPanel.add(copyright);
leftPanel.add(credits);
leftPanel.add(Box.createVerticalGlue());
main.add(centerLabel, BorderLayout.CENTER);
main.add(leftPanel, BorderLayout.LINE_START);
add(main);
pack();
}
public static void main(String[] args) {
final JFrame frame = new JFrame("GUI");
JPanel panel = new JPanel();
panel.add(new JButton(new AbstractAction("About") {
#Override
public void actionPerformed(ActionEvent e) {
About about = new About(frame);
about.setLocationRelativeTo(frame);
about.setVisible(true);
}
}));
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

Categories