将gridLayout添加到已经实现FlowLayout的JLabel上



我需要在GUI上的按钮下添加一个带有边界工厂的网格布局!我试过许多不同的方法,但似乎都不奏效。我把我当前的代码放在下面…

public abstract class TestVehicles extends Vehicle implements ActionListener {
    public static void main(String[] args) {
        JFrame carPark = new JFrame("Car Park");
        carPark.setSize(750, 750);
        carPark.setResizable(false);
        carPark.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        placeComponets(carPark);
        carPark.setVisible(true);
    }
    public static void placeComponets(JFrame carPark) {
        carPark.setLayout(new FlowLayout());
        JLabel userLabel = new JLabel("");
        userLabel.setBounds(750, 750, 750, 750);
        carPark.add(userLabel);
        userLabel.setBackground(Color.LIGHT_GRAY);
        userLabel.setOpaque(true);
        userLabel.setHorizontalAlignment(SwingConstants.LEFT);
        userLabel.setVerticalAlignment(SwingConstants.TOP);
        JButton addCar = new JButton("Add Car");
        addCar.setBounds(10, 10, 100, 100);
        carPark.add(addCar);
        addCar.setVisible(true);
        ActionListener addCarButtonListener = new AddCarButtonListener();
        addCar.addActionListener(addCarButtonListener);
        addCar.setVisible(true);
        JButton addLorry = new JButton("Add Lorry");
        addLorry.setBounds(10, 10, 25, 25);
        carPark.add(addLorry);
        addLorry.setVisible(true);
        ActionListener addLorryButtonListener = new AddLorryButtonListener();
        addLorry.addActionListener(addLorryButtonListener);
        addLorry.setVisible(true);
        JButton addCoach = new JButton("Add Coach");
        addCoach.setBounds(10, 10, 100, 100);
        carPark.add(addCoach);
        addCoach.setVisible(true);
        ActionListener addCoachButtonListener = new AddCoachButtonListener();
        addCoach.addActionListener(addCoachButtonListener);
        addCoach.setVisible(true);

        JPanel gridPanel = new JPanel();
        JPanel gridPanelLayout = new JPanel(new GridLayout(4, 5, 10, 10));
        carPark.add(gridPanelLayout);
        gridPanelLayout.setBackground(Color.WHITE);
        gridPanelLayout.setBorder(BorderFactory.createEmptyBorder(4, 4, 10, 10));
        Border redBorder = BorderFactory.createLineBorder(Color.RED);
    }

你可以使用一个JPanel与GridBagLayout作为contentPane,并把其他2个JPanel,一个与FlowLayout和GridLayout在你的contentPane。

 public class Test implements ActionListener {
    protected static JPanel panel;
    protected static JPanel panel_1;
        public static void main(String[] args) {
            JFrame carPark = new JFrame("Car Park");
            carPark.setSize(750, 750);
            carPark.setResizable(false);
            carPark.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            GridBagLayout gridBagLayout = new GridBagLayout();
            gridBagLayout.columnWidths = new int[]{0, 0};
            gridBagLayout.rowHeights = new int[]{0, 0, 0};
            gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
            gridBagLayout.rowWeights = new double[]{1.0, 1.0, Double.MIN_VALUE};
            carPark.getContentPane().setLayout(gridBagLayout);
            panel = new JPanel();
            GridBagConstraints gbc_panel = new GridBagConstraints();
            gbc_panel.insets = new Insets(0, 0, 5, 0);
            gbc_panel.fill = GridBagConstraints.BOTH;
            gbc_panel.gridx = 0;
            gbc_panel.gridy = 0;
            carPark.getContentPane().add(panel, gbc_panel);
            panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
            panel_1 = new JPanel();
            GridBagConstraints gbc_panel_1 = new GridBagConstraints();
            gbc_panel_1.fill = GridBagConstraints.BOTH;
            gbc_panel_1.gridx = 0;
            gbc_panel_1.gridy = 1;
            carPark.getContentPane().add(panel_1, gbc_panel_1);
            panel_1.setLayout(new GridLayout(1, 0, 0, 0));
            carPark.setVisible(true);
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
        }
}

相关内容

  • 没有找到相关文章

最新更新