日期:2014-05-20  浏览次数:20642 次

关于GridBagLayout的一个简单问题

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class test
{
public static void main(String[] args)
{
CutterFrame frame = new CutterFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

//窗口类
class CutterFrame extends JFrame
{
public static final int DEFAULT_WIDTH = 500;
public static final int DEFAULT_HEIGHT = 550;

public CutterFrame()
{
// get screen dimensions(获取屏幕尺寸)
Toolkit kit = Toolkit.getDefaultToolkit();//默认工具包
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;

setBounds(screenWidth/4,screenHeight/8,DEFAULT_WIDTH ,DEFAULT_HEIGHT);
setTitle("Super File Cutter");
setResizable(false);//不可改变窗口大小

CutPanel ctp = new CutPanel();
add(ctp);

}
}

//JPane
class CutPanel extends JPanel
{
private JLabel fn = new JLabel("File Name:");
private JTextField fntf = new JTextField(20);
private JButton b = new JButton("...");
private JLabel fs = new JLabel("File Size:");
private JTextField fstf = new JTextField(20);

public CutPanel()
{
GridBagLayout layout = new GridBagLayout();
setLayout(layout);
GridBagConstraints gbc = new GridBagConstraints();

gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 4;
gbc.gridheight = 1;
add(fn,gbc);

gbc.gridx = GridBagConstraints.RELATIVE;
add(fntf,gbc);
add(b,gbc);

gbc.gridx = 0;
gbc.gridy++;
add(fs,gbc);
gbc.gridx = GridBagConstraints.RELATIVE;
add(fstf,gbc);
}
}


刚看了下GridBagLayout,然后编了一个简单的布局,但是程序运行后,CutPanel中的组件都会被放到面板中间,可是我gridx和gridy的值初始是0啊,不是应该放在面板左上角么??谢谢指导




------解决方案--------------------
Java code
    public CutPanel() {
        GridBagLayout layout = new GridBagLayout();
        setLayout(layout);
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.weightx = 1;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridwidth = 4;
        gbc.gridheight = 1;
        add(fn, gbc);

        gbc.gridx = GridBagConstraints.RELATIVE;
        add(fntf, gbc);
        add(b, gbc);
        
        gbc.weighty = 1;
        gbc.gridx = 0;
        gbc.gridy++;
        add(fs, gbc);
        gbc.gridx = GridBagConstraints.RELATIVE;
        add(fstf, gbc);
    }