关于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);
}