import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.TextArea;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
class TextEditer {
TextArea user_input = new TextArea();
TextArea area1 = new TextArea();
TextArea area2 = new TextArea();
TextArea area3 = new TextArea();
TextArea area4 = new TextArea();
TextEditer(){
JFrame jf = new JFrame();
jf.setTitle("文本编辑器");
jf.setBounds(100,100,600,300);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagLayout gbl = new GridBagLayout();
jf.setLayout(gbl);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.BOTH;
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=4;
gbc.gridheight=3;
gbc.weightx=1.0;
gbc.weighty=1.0;
gbl.setConstraints(user_input,gbc);
gbc.gridx=4;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
gbc.weightx=0.1;
gbc.weighty=0.1;
gbl.setConstraints(area1,gbc);
gbc.gridx=5;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
gbc.weightx=0.1;
gbc.weighty=0.1;
gbl.setConstraints(area2,gbc);
gbc.gridx=4;
gbc.gridy=1;
gbc.gridwidth=2;
gbc.gridheight=1;
gbc.weightx=0.2;
gbc.weighty=0.1;
gbl.setConstraints(area3,gbc);
gbc.gridx=4;
gbc.gridy=2;
gbc.gridwidth=2;
gbc.gridheight=1;
gbc.weightx=0.2;
gbc.weighty=0.1;
gbl.setConstraints(area4,gbc);
jf.add(user_input);
jf.add(area1);
jf.add(area2);
jf.add(area3);
jf.add(area4);
jf.pack();
jf.setVisible(true);
}
}
public class Demo4 {
public static void main(String[] args) {
new TextEditer();
}
}
我想要的是第一张图片那样的布局,但是出来的确是第二张那样的布局。我不明白是哪里的错误,求指正。
以area1和area2为例,我想要的是1x1的尺寸,但是实际效果是2x1的尺寸。我不明白这是为什么。
我尝试过对gbc的值进行修改,但是一直没有达到预期效果。
程序中使用了GridBagLayout布局管理器,将用户输入的文本内容显示在一个TextArea组件中,并通过正则表达式将其分为四个部分,分别显示在另外三个TextArea组件中。
程序中创建了一个JFrame窗口,设置了窗口的标题、大小和关闭行为。使用GridBagConstraints来设置组件的位置和大小,通过GridBagLayout将所有组件排列在网格中。
但是这段代码缺少了import语句,可能需要添加一些必须的包,以及在构造函数中添加代码来初始化组件并设置它们的属性。另外,程序中可能还需要添加事件处理程序来响应用户的操作。