Последнее редактирование:
Я думаю, JPanel
на LINE_START
или WEST
должно быть с GridLayout
, а CENTER
JPanel может идти с GridLayout
для размещения этих изображений :-). Я работал над этим, когда вы приняли этот ответ и когда @AndrewThompson добавил этот комментарий относительно GridLayout
штуковины, но похоже, что включение этого JPanel в GridLayout позволит использовать JButtons одинакового размера. Вот моя интерпретация с GridLayout
в коде:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
public class RunFurniture
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame application = new JFrame();
PanelFurniture panel = new PanelFurniture();
application.add(panel);
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.pack();
application.setLocationByPlatform(true);
application.setVisible(true);
}
}
class PanelFurniture extends JPanel implements ActionListener
{
JButton center, east;
JButton[] commandButtons = {
new JButton(" Add Chair"),
new JButton(" Add Table"),
new JButton(" Add Desk "),
new JButton(" Clear All "),
new JButton("Total Price"),
new JButton(" Save "),
new JButton(" Load "),
new JButton("Summary ")
};
JPanel centerPanel, westPanel, eastPanel;
PanelFurniture()
{
this.setLayout(new BorderLayout());
westPanel = new JPanel();
westPanel.setLayout(new GridLayout(0, 1));
//westPanel.setLayout(new BoxLayout(westPanel, BoxLayout.PAGE_AXIS));
westPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
for(int i=0; i<commandButtons.length; i++)
{
westPanel.add(commandButtons[i]);
commandButtons[i].addActionListener(this);
}
// westPanel.setSize(westDimension);
this.add(westPanel, BorderLayout.LINE_START);
// start the middle panel
centerPanel = new JPanel(new GridLayout(1,2));
center = new JButton("center");
centerPanel.add(center);
east = new JButton("east");
centerPanel.add(east);
this.add(centerPanel, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent ae)
{
}
}
Выход:
Вот моя интерпретация с BoxLayout
в коде:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
public class RunFurniture
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame application = new JFrame();
PanelFurniture panel = new PanelFurniture();
application.add(panel);
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.pack();
application.setLocationByPlatform(true);
application.setVisible(true);
}
}
class PanelFurniture extends JPanel implements ActionListener
{
JButton center, east;
JButton[] commandButtons = {
new JButton(" Add Chair"),
new JButton(" Add Table"),
new JButton(" Add Desk "),
new JButton(" Clear All "),
new JButton("Total Price"),
new JButton(" Save "),
new JButton(" Load "),
new JButton("Summary ")
};
JPanel centerPanel, westPanel, eastPanel;
PanelFurniture()
{
this.setLayout(new BorderLayout());
westPanel = new JPanel();
westPanel.setLayout(new GridLayout(0, 1));
//westPanel.setLayout(new BoxLayout(westPanel, BoxLayout.PAGE_AXIS));
westPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
for(int i=0; i<commandButtons.length; i++)
{
westPanel.add(commandButtons[i]);
commandButtons[i].addActionListener(this);
}
// westPanel.setSize(westDimension);
this.add(westPanel, BorderLayout.LINE_START);
// start the middle panel
centerPanel = new JPanel(new GridLayout(1,2));
center = new JButton("center");
centerPanel.add(center);
east = new JButton("east");
centerPanel.add(east);
this.add(centerPanel, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent ae)
{
}
}
Вот вывод: