所以我曾经是一名优秀的GUI程序员,但似乎我已经失去了相当多的GridBagLayout知识。
我要做的是制作一个带有JPanels的自定义框。我首先使用GridLayout,但是根据我研究的内容,实际上没有办法为每个盒子自定义“%width / height”,它只是简单地将它们全部展开。
所以我的拳头尝试就是这样。
(GridLayout的)
我继续环顾四周,我相信我需要使用GridBagLayout。所以我花了一个小时的时间看一些例子,我觉得我只是因为缺乏更好的词语而“只是”没有得到它。我已经尝试为GridBagLaout实现各种测试代码,但我永远无法完全满足我的需要。
我的问题是,有人可以给我一个我正在寻找的骨架设置吗?我不想要整个代码,只需要基本的骨架,这样我就可以自己搞清楚(这样我实际上“得到它”)。
所以,通过骨架,我的意思是为我做一个方框,然后请愚蠢的每一步做什么,以便我可以尝试对其余方框遵循相同的过程。
我期待最终得到的是......
(我想要的GridBagLayout)
就实际百分比而言,我正在考虑:
宽度:绿色/红色边为80%,蓝色边为20%。
高度:红色为80%,绿色/白色为20%。
我目前正在完成一个项目,但我希望我能在今晚某个时候开始研究这个项目。
非常感谢您将来的所有帮助! -Austin
答案 0 :(得分:2)
试试这个:
import java.awt.*;
import javax.swing.*;
public class GridBagDemo implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new GridBagDemo());
}
public void run()
{
JComponent redComp = new JPanel();
redComp.setBackground(Color.RED);
JComponent greenComp = new JPanel();
greenComp.setBackground(Color.GREEN);
JComponent blueComp = new JPanel();
blueComp.setBackground(Color.BLUE);
JComponent whiteComp = new JPanel();
whiteComp.setBackground(Color.WHITE);
GridBagConstraints gbc = new GridBagConstraints();
// we'll use this anchor/fill for all components
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.fill = GridBagConstraints.BOTH;
JPanel panel = new JPanel(new GridBagLayout());
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.weightx = 0.8; // use 80% of the overall width
gbc.weighty = 0.8; // use 80% of the overall height
panel.add(redComp, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 2;
gbc.weightx = 0.2; // use 20% of the overall width
gbc.weighty = 1.0; // use 100% of the overall height
panel.add(blueComp, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 0.8; // use 80% of the width used by green/white comps
gbc.weighty = 0.2; // use 20% of the overall height
panel.add(greenComp, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 0.2; // use 20% of the width used by green/white comps
gbc.weighty = 0.2; // use 20% of the overall height
panel.add(whiteComp, gbc);
JFrame frame = new JFrame("GrigBag Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}