私はGridBagLayoutを持っていますが、何らかの理由でJTextAreaがグリッドバッグの比率を聞きたくないと判断しました。レイアウトを含むパネルを作成すると、テキストボックスが画面の1/2を占めるまで大きくなります。ここにいくつかのコードがあります:
tp = new JTabbedPane();
tp.setFont(Main.f);
//Adds tabs with several buttosn to my tabbed pane
for(Menu menu : FileManager.menus){
JPanel tmp = new JPanel();
int s = (int) Math.ceil(Math.sqrt(menu.products.size()));
tmp.setLayout(new GridLayout(s,s));
for(Product p : menu.products){//Act as
p.setFont(Main.f);
p.addActionListener(this);
tmp.add(p);
}
tp.addTab(menu.name,null,tmp,null);
}
receipt.setBorder(BorderFactory.createEtchedBorder());
//starting up with GridBag
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.ipadx = 0;
gbc.ipady = 0;
//sets up and adds the JTabbedPane
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 0.8;
gbc.weighty = 0.8;
add(tp,gbc);
//sets up and adds receipt - The one that takes up half the screen
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0.2;
receipt.setEditable(false);
receipt.setText("Ticket number: 0\n" +
"Transaction number: 0\n");
receipt.setLineWrap(true);
add(receipt,gbc);
//sets up and adds a JPanel that has a bunch of buttons on it(Uses gridlayout)
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.weightx = 1;
gbc.weighty = 0.2;
add(buttons,gbc);
buttons.setLayout(new GridLayout(1,8));
createButton(newtable);
createButton(remove);
for(JButton a : quicks)
createButton(a);
createButton(pay);
createButton(exit);
revalidate();
repaint();
TextAreaを空白のJButtonに変更すると、スペースをまったく占有しません。基本的に、スペースは右側のオブジェクトで埋められます。左側のオブジェクトを画面の4/5に広げ、右側のオブジェクトを最後の1/5に広げたいことをgridbagに伝えるにはどうすればよいですか?このバージョンでは、均等化を使用してこれを試みましたが、元のバージョンでは、セルを使用してこれを試みたため、左側のオブジェクトはgridx = 0 gridwidth = 4であり、右側のオブジェクトはgridx = 4 gridwidth=1でした。
どちらの方法も機能しませんでした。私はまた、別のアイデア(より良いレイアウトやJTableなど)を受け入れています。
助けてくれてありがとう、チェイス
それ がしていることそれがしなければならないことのための次元