任务目标:
建立一个窗口。从上至下一次显示4个文本框。其中第二个文本框高度是其他3个的2倍。问题:附上代码。黏贴复制下,帮忙运行下。运行出来就懂了。
求帮忙解决。最好能在改的地方注释下。一个小问题。
import java.awt.*;
import javax.swing.*;public class ChatWnd
{
public static void main(String args[])
{
CreateWnd ChatWindow = new CreateWnd();
}
}//a class in order to just create a window
class CreateWnd
{
public CreateWnd()
{
//顶层容器制定
JFrame app = new JFrame("连通Chat");
//Container c = getContentPane();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(640, 160);
//设置布局--网格包布局
GridBagLayout gr = new GridBagLayout();
app.setLayout(gr);
//设置 网格包约束
GridBagConstraints gc = new GridBagConstraints();
//第一个
//每一个文本框创建,显示JTextArea一个实例,再放入JScrollPane,再放入JPanel。最后是把JPanel
//放到JFrame里头。
JTextArea jText1 = new JTextArea();
JScrollPane roll1 = new JScrollPane(jText1);
jText1.append("you're talking to: null");
JPanel jp1 = new JPanel();
jp1.setLayout(new BorderLayout());
jp1.add(roll1, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 0;
gc.gridheight = 10;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp1, gc);
//第二个
JTextArea jText2 = new JTextArea();
JScrollPane roll2 = new JScrollPane(jText2);
jText2.append("you");
JPanel jp2 = new JPanel();
jp2.setLayout(new BorderLayout());
jp2.add(roll2, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 11;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridheight = 20;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp2, gc);
//第三个
JTextArea jText3 = new JTextArea();
JScrollPane roll3 = new JScrollPane(jText3);
jText3.append("you");
JPanel jp3 = new JPanel();
jp3.setLayout(new BorderLayout());
jp3.add(roll3, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 31;
gc.gridwidth = GridBagConstraints.RELATIVE;
gc.gridheight = 10;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp3, gc);
//第4个
JTextArea jText4 = new JTextArea();
JScrollPane roll4 = new JScrollPane(jText4);
jText3.append("you");
JPanel jp4 = new JPanel();
jp4.setLayout(new BorderLayout());
jp4.add(roll4, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 41;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridheight = 10;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp4, gc);
//添加组件
app.add(jp1);
app.add(jp2);
app.add(jp3);
app.add(jp4);
//显示
//app.pack();
app.setVisible(true);
}
}
建立一个窗口。从上至下一次显示4个文本框。其中第二个文本框高度是其他3个的2倍。问题:附上代码。黏贴复制下,帮忙运行下。运行出来就懂了。
求帮忙解决。最好能在改的地方注释下。一个小问题。
import java.awt.*;
import javax.swing.*;public class ChatWnd
{
public static void main(String args[])
{
CreateWnd ChatWindow = new CreateWnd();
}
}//a class in order to just create a window
class CreateWnd
{
public CreateWnd()
{
//顶层容器制定
JFrame app = new JFrame("连通Chat");
//Container c = getContentPane();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(640, 160);
//设置布局--网格包布局
GridBagLayout gr = new GridBagLayout();
app.setLayout(gr);
//设置 网格包约束
GridBagConstraints gc = new GridBagConstraints();
//第一个
//每一个文本框创建,显示JTextArea一个实例,再放入JScrollPane,再放入JPanel。最后是把JPanel
//放到JFrame里头。
JTextArea jText1 = new JTextArea();
JScrollPane roll1 = new JScrollPane(jText1);
jText1.append("you're talking to: null");
JPanel jp1 = new JPanel();
jp1.setLayout(new BorderLayout());
jp1.add(roll1, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 0;
gc.gridheight = 10;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp1, gc);
//第二个
JTextArea jText2 = new JTextArea();
JScrollPane roll2 = new JScrollPane(jText2);
jText2.append("you");
JPanel jp2 = new JPanel();
jp2.setLayout(new BorderLayout());
jp2.add(roll2, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 11;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridheight = 20;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp2, gc);
//第三个
JTextArea jText3 = new JTextArea();
JScrollPane roll3 = new JScrollPane(jText3);
jText3.append("you");
JPanel jp3 = new JPanel();
jp3.setLayout(new BorderLayout());
jp3.add(roll3, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 31;
gc.gridwidth = GridBagConstraints.RELATIVE;
gc.gridheight = 10;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp3, gc);
//第4个
JTextArea jText4 = new JTextArea();
JScrollPane roll4 = new JScrollPane(jText4);
jText3.append("you");
JPanel jp4 = new JPanel();
jp4.setLayout(new BorderLayout());
jp4.add(roll4, BorderLayout.CENTER);
//约束
gc.gridx = 0;
gc.gridy = 41;
gc.gridwidth = GridBagConstraints.REMAINDER;
gc.gridheight = 10;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(jp4, gc);
//添加组件
app.add(jp1);
app.add(jp2);
app.add(jp3);
app.add(jp4);
//显示
//app.pack();
app.setVisible(true);
}
}
在 https://designgridlayout.dev.java.net下载 designgridlayout-1.5.jar
import net.java.dev.designgridlayout.DesignGridLayout;JFrame frame = new JFrame("连通Chat");
DesignGridLayout layout = new DesignGridLayout(frame.getContentPane());
layout.row().left().fill().add(new JScrollPane(new JTextArea(),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
layout.row().left().fill().add(new JScrollPane(new JTextArea(),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
layout.row(2.0).left().fill().add(new JScrollPane(new JTextArea(),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
layout.row().left().fill().add(new JScrollPane(new JTextArea(),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
frame.setPreferredSize(new Dimension(400,600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
你只要设几个参数就行了
weighty表示y向的比例所以1,2,1,1就行了
gridy表示第几个组件,而不是精确坐标,所以只要0,1,2,3就行了import java.awt.*;
import javax.swing.*;public class ChatWnd {
public static void main(String args[]) {
CreateWnd ChatWindow = new CreateWnd(); }
}// a class in order to just create a window
class CreateWnd {
public CreateWnd() {
// 顶层容器制定
JFrame app = new JFrame("连通Chat");
// Container c = getContentPane();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(640, 160);
// 设置布局--网格包布局
GridBagLayout gr = new GridBagLayout();
app.setLayout(gr);
// 设置 网格包约束
GridBagConstraints gc = new GridBagConstraints(); // 第一个
// 每一个文本框创建,显示JTextArea一个实例,再放入JScrollPane,再放入JPanel。最后是把JPanel
// 放到JFrame里头。
JTextArea jText1 = new JTextArea();
JScrollPane roll1 = new JScrollPane(jText1);
jText1.append("you're talking to: null");
gc.gridx = 0;
gc.gridy = 0;
gc.weighty = 1;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(roll1, gc);
app.add(roll1); // 第二个
JTextArea jText2 = new JTextArea();
JScrollPane roll2 = new JScrollPane(jText2);
jText2.append("you");
gc.gridx = 0;
gc.gridy = 1;
gc.weighty = 2;
gc.fill = GridBagConstraints.BOTH;
gr.setConstraints(roll2, gc);
app.add(roll2); // 第三个
JTextArea jText3 = new JTextArea();
JScrollPane roll3 = new JScrollPane(jText3);
jText3.append("you");
gc.gridx = 0;
gc.gridy = 2;
gc.weighty = 1;
gr.setConstraints(roll3, gc);
app.add(roll3);
// 第四个
JTextArea jText4 = new JTextArea();
JScrollPane roll4 = new JScrollPane(jText4);
jText3.append("you");
gc.gridx = 0;
gc.gridy = 3;
gc.weighty = 1;
gr.setConstraints(roll4, gc);
app.add(roll4); app.setVisible(true);
}
}