1

私は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など)を受け入れています。

助けてくれてありがとう、チェイス

それ それが何をするか がしていることそれがしなければならないことのための次元 ここに画像の説明を入力してください

4

1 に答える 1

2

正確に4/5と1/5の比率に固定されていない場合は、BorderLayoutを使用して、ボタンを中央に配置し、テキスト領域を東に配置できます。

境界線レイアウトは、指定した幅のテキスト領域を表示します-希望のサイズを指定します(幅、高さは任意の数に設定できます。境界線レイアウトはそれを無視します)。その後、残りのスペースはボタンパネルによって占められます。

境界線のレイアウトについて詳しくは、http: //docs.oracle.com/javase/tutorial/uiswing/layout/border.htmlをご覧ください。

于 2013-02-21T07:46:30.170 に答える