使用空gridLayout,但稍后将保存ImageIcon并存储信息.我可以修改尺寸吗?



下面是我的代码,这是为了在左边创建一个网格,这是做的,但是这两个网格是非常长和薄的,即使后来我把图像添加到它仍然是相同的大小!我不知道是否有一些改变它的方法,我试着使用griddbaglayout,但我以前从未使用过它,我不确定如何将我当前的代码应用到它!我不太确定如何解释它,因为我是java的初学者,刚在大学学习了很短的时间。如果你需要更多的信息,我很乐意提供。

我知道网格意味着所有的东西都是相同的大小,但是有没有什么方法可以设置或控制它的大小呢?

public static int ROWS = 3;
public static int ROWS1 = 1;
public static int COLUMNS = 4;
pnlLorry = new JPanel();

    pnlLorry.setLayout(new GridLayout(ROWS1, COLUMNS));
    pnlLorry.setSize(100, 400);
    pnlLorry.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    pnlLorry.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
    for (int row = 0; row < largeVehicle.length; row++) {
        for (int column = 0; column < largeVehicle[row].length; column++) {
            ImagePanel pnlLorryImage = new ImagePanel();
            pnlLorryImage.addMouseListener(new MyMouseListener(row, column));
            pnlLorryImage.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            pnlLorry.add(pnlLorryImage, row * (largeVehicle.length - 1) + column);
        }
    }
    pnlCars = new JPanel();
    pnlCars.setSize(400, 400);
    pnlCars.setLayout(new GridLayout(ROWS, COLUMNS));
    pnlCars.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
    pnlCars.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
    for (int row = 0; row < carVehicle.length; row++) {
        for (int column = 0; column < carVehicle[row].length; column++) {
            ImagePanel pnlCarImage = new ImagePanel();
            pnlCarImage.addMouseListener(new MyMouseListener(row, column));
            pnlCarImage.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            pnlCars.add(pnlCarImage, row * (carVehicle.length - 1) + column);
        }
    }
    GridLayout = new GridLayout(2, 1);
    vehicleMain.setLayout(GridLayout);
    vehicleMain.add(pnlLorry);
    vehicleMain.add(pnlCars);

两个栅格做得又长又细

我很惊讶为什么它不能与GridLayout一起工作,因为默认情况下GridLayout以百分比为所有组件分配相同的大小。

无论何时使用布局管理器,都不需要调用setSize()。把它留给布局管理器来设置大小。

删除setSize()方法调用。

我试图使用griddbaglayout,但我以前从未使用过它,我不确定如何将我当前的代码应用到它!

在下面的示例代码中,我更改了最后一部分,可能会帮助您解决它。

改变:

GridLayout = new GridLayout(2, 1);
vehicleMain.setLayout(GridLayout);
vehicleMain.add(pnlLorry);
vehicleMain.add(pnlCars); 

:

GridBagLayout gridBagLayout = new GridBagLayout();
vehicleMain.setLayout(gridBagLayout);
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.BOTH;// set VERTICAL/HORIZONTAL as per need
gc.weightx=1; // 100% horizontally
gc.weighty=1; // 100% vertically
gc.gridx = 0; // first column
gc.gridy = 0; // first row
vehicleMain.add(pnlLorry, gc);// notice second parameter
gc.gridx = 0; // first column 
gc.gridy = 1; // second row
vehicleMain.add(pnlCars, gc);// notice second parameter

最好在Swing教程关于如何使用griddbaglayout的详细示例中进行解释。

相关内容

最新更新