创建网格包布局 [英] Creating Gridbag Layout

查看:362
本文介绍了创建网格包布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个GridBagLayout的,只需有文本框在垂直窗口中的TextView顶部之上的标签,但我发现了异常

 异常螺纹主java.lang.IllegalArgumentException异常:无法添加到布局:约束必须是GridBagConstraint
    在java.awt.GridBagLayout.addLayoutComponent(GridBagLayout.java:685)
    在java.awt.Container.addImpl(Container.java:1072)
    在java.awt.Container.add(Container.java:957)
    在javax.swing.JFrame.addImpl(JFrame.java:540)
    在java.awt.Container.add(Container.java:925)
    在guiprojj.gui.main(gui.java:31)

任何人都可以帮助我解决这个例外,也许是我误解了如何GridBagLayout的工作,如果是的话,如果你能在这将是真棒指向正确的方向我。
鸭preciate的援助。

 包guiprojj;进口java.awt.BorderLayout中;
进口java.awt.Dimension中;
进口java.awt.GridBagConstraints中;
进口java.awt.GridBagLayout中;
进口java.awt.event.ActionEvent中;
进口java.awt.event.ActionListener;
进口的java.util.Map;进口的javax.swing *。进口com.eclipsesource.json.JsonObject;
进口com.google.gson.JsonParser;
进口com.json.parsers.JSONParser;
进口com.json.parsers.JsonParserFactory;
公共类GUI {
    公共静态无效的主要(字串[] args)
    {
        JFrame的maingui =新的JFrame(桂);
        maingui.setLayout(新的GridBagLayout());
        GridBagConstraints的C =新的GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        JButton的输入=的新的JButton(回车);
        最终的JTextArea movieinfo =新的JTextArea(5,20);
        最终的JTextField movietext =新的JTextField(16);
        c.gridx = 1;
        c.gridy = 0;
        maingui.add(movietext,maingui);
        最后JScrollPane的scrolll =新JScrollPane的(movieinfo);
        最终的JLabel titlee =新的JLabel(在这里输入影片名称:);
        maingui.setResizable(假);
        maingui.setVisible(真);
        movieinfo.setLineWrap(真);
        movieinfo.setWrapStyleWord(真);
        movieinfo.setEditable(假);        scrolll.get preferredSize();
        //pangui.set$p$pferredSize(new尺寸(300,150));
        //pangui.add(scrolll,BorderLayout.CENTER);
        //movieinfo.add(scrolll);
        maingui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        maingui.pack();
        enter.addActionListener(新的ActionListener(){
            公共无效的actionPerformed(ActionEvent的五)
            {
                的System.out.println(Test.getMovieInfo(movietext.getText()));
                 JsonParserFactory工厂= JsonParserFactory.getInstance();
                 JSONParser解析器= factory.newJsonParser();
                 地图jsonData = parser.parseJson(Test.getMovieInfo(movietext.getText()));
                 字符串标题=(字符串)jsonData.get(标题);
                 字符串年份=(字符串)jsonData.get(年);
                 字符串剧情=(字符串)jsonData.get(暗算);
                 movieinfo.setText(标题:+标题+\\ nYear:+年份+\\ NPLOT:+情节);
            }
            });        }
}


解决方案

我觉得 maingui.add(movietext,maingui); maingui 。新增(movietext,C);

这是最后一个参数应该是布局特定约束对象。你传递给它的父对象。

I'm trying to make a gridbaglayout, to simply have the label atop the textbox atop the textview in a vertical window, but I'm getting the exception

Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: constraints must be a GridBagConstraint
    at java.awt.GridBagLayout.addLayoutComponent(GridBagLayout.java:685)
    at java.awt.Container.addImpl(Container.java:1072)
    at java.awt.Container.add(Container.java:957)
    at javax.swing.JFrame.addImpl(JFrame.java:540)
    at java.awt.Container.add(Container.java:925)
    at guiprojj.gui.main(gui.java:31)

Can anyone assist me in fixing this exception, maybe I'm misunderstanding how gridbaglayout works, if so, if you could point me in the right direction that would be awesome. Appreciate the assistance.

package guiprojj;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;

import javax.swing.*;

import com.eclipsesource.json.JsonObject;
import com.google.gson.JsonParser;
import com.json.parsers.JSONParser;
import com.json.parsers.JsonParserFactory;


public class gui {
    public static void main(String[] args)
    {
        JFrame maingui = new JFrame("Gui");
        maingui.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        JButton enter = new JButton("Enter");
        final JTextArea movieinfo = new JTextArea(5,20);
        final JTextField movietext = new JTextField(16);
        c.gridx = 1;
        c.gridy = 0;
        maingui.add(movietext, maingui);
        final JScrollPane scrolll = new JScrollPane(movieinfo);
        final JLabel titlee = new JLabel("Enter movie name here:");
        maingui.setResizable(false);
        maingui.setVisible(true);
        movieinfo.setLineWrap(true);
        movieinfo.setWrapStyleWord(true);
        movieinfo.setEditable(false);

        scrolll.getPreferredSize();
        //pangui.setPreferredSize(new Dimension(300, 150));
        //pangui.add(scrolll, BorderLayout.CENTER);
        //movieinfo.add(scrolll);
        maingui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        maingui.pack();
        enter.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)  
            {
                System.out.println(Test.getMovieInfo(movietext.getText()));
                 JsonParserFactory factory=JsonParserFactory.getInstance();
                 JSONParser parser=factory.newJsonParser();
                 Map jsonData=parser.parseJson(Test.getMovieInfo(movietext.getText()));
                 String Title = (String)jsonData.get("Title");
                 String Year = (String)jsonData.get("Year");
                 String Plot = (String)jsonData.get("Plot");
                 movieinfo.setText("Title: "+Title+"\nYear: "+ Year +"\nPlot: "+Plot);
            }
            });

        }
}

解决方案

I think maingui.add(movietext, maingui); should be maingui.add(movietext, c);

That last parameter should be the layout-specific constraints object. You're passing it the parent object.

这篇关于创建网格包布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆