qq_23828045 2016-08-07 07:54 采纳率: 0%
浏览 1254

java swing gridbaglayout布局问题

我自定义一个面板,使用网格布局,一共是四行一列,第一行是一个jlable(放图片),第二行是一个
jtextfield(显示从数据库里调用的数据),第三行是一个jtextarea(显示从数据库里调用的数据)
,第四行是一个jbutton。jtextarea布局是使用全填充的(fill=both)。问题来了,每次itextarea
显示数据时总会超出它原本所规定好的大小,把第二行和第四行往上顶和往下压了,这个怎么也解决不了。在线等大牛回复!
package cn.vr.swing.Jpanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
/*

  • author:黄龙
  • time:2016.7.29 */ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.TextArea; import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.plaf.ButtonUI;
import javax.swing.plaf.TextUI;
import javax.swing.plaf.basic.BasicButtonUI;
import javax.swing.plaf.basic.BasicTextPaneUI;
import javax.swing.plaf.basic.BasicViewportUI;
import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import javax.swing.text.JTextComponent;
import javax.swing.text.View;
import javax.swing.text.Position.Bias;

import org.apache.logging.log4j.core.config.DefaultConfigurationMonitor;

import cn.vr.other.Datasearch;
import cn.vr.po.Information;
import cn.vr.swing.JButton.MyimgJbutton;
import cn.vr.swing.JLable.MyimgLable;

public class Imagepanel extends JPanel{

private MyimgLable jLabel;
private MyimgJbutton jButton;
private JTextField field;
private JTextArea area;
private Information information;
Datasearch data;

List paths;
private JLabel label;
JScrollPane jScrollPa;

public Imagepanel(Information information) {
    super();
    // TODO Auto-generated constructor stub
    data=new Datasearch();
    this.information=information;
    paths=data.Dataimages(information.getInfoId());
   setLayout(new GridBagLayout());
    GridBagConstraints constraints=new GridBagConstraints();
    jLabel=new MyimgLable(paths.get(0));


    System.out.println("width="+jLabel.getWidth());



    jButton=new MyimgJbutton(System.getProperty("user.dir") +"/pic/圆角矩形.png");
    jButton.setUI(new BasicButtonUI());
    //jButton.setText("开始游戏");
    field=new JTextField();
    area=new JTextArea();

    field.setText(information.getName());
    area.setText(information.getIntroduce());

    field.setForeground(Color.WHITE);
    area.setForeground(Color.WHITE);

    Font font1=new Font("宋体", Font.BOLD , 25);
    Font font2=new Font("TimesRoman", Font.PLAIN, 15);
    field.setFont(font1);
    area.setFont(font2);

    field.setEditable(false);
    area.setEditable(false);
    field.setPreferredSize(getMaximumSize());
    area.setLineWrap(true);
    //area.setRows(getHeight());
    //第一行
    constraints.gridy=0;
    constraints.gridx=0;
    constraints.gridheight=1;
    constraints.weightx=100;
    constraints.weighty=50;
    constraints.fill=constraints.BOTH;

    add(jLabel, constraints);




    //第二行
    constraints.gridy=1;
    constraints.gridx=0;
    constraints.gridheight=1;
    constraints.weightx=100;
    constraints.weighty=10;
    constraints.fill=constraints.HORIZONTAL;
    add(field, constraints);
    field.setOpaque(false);

    //第三行
    constraints.gridy=2;
    constraints.gridx=0;
    constraints.weighty=20;
    constraints.fill=constraints.BOTH;
    //constraints.anchor=constraints.WEST;


    area.setOpaque(false);
    add(area, constraints);


    //第四行
    constraints.gridy=3;
    constraints.gridx=0;
    constraints.weighty=20;
    constraints.fill=constraints.NONE;
    constraints.anchor=constraints.EAST;
    constraints.ipadx=80;
    constraints.ipady=25;
    add(jButton, constraints);

    setOpaque(false);
}
  • 写回答

3条回答 默认 最新

  • Robot-S 2016-08-07 08:01
    关注

    GridBagLayout以表格形式布置容器内的组件,将每个组件放置在每个单元格内,而一个单元格可以跨越多个单元格合并成一个单元格,即多个单元格可以组合成一个单元格,从而实现组件的自由布局。
    1.构造方法
    GirdBagLayout():建立一个新的GridBagLayout管理器。
    GridBagConstraints():建立一个新的GridBagConstraints对象。
    Grid......
    答案就在这里:java Swing布局管理之GridBagLayout布局
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题