由于项目需要,主管让我用swing做个运营管理平台.这个平台有个管理员登陆的首页,包括让管理员输入用户名和密码的文本框(JTextField),但是我做出来的两个文本框占了整个屏幕,不知道怎么才能设置文本框的大小,让整个页面看起来美观.知道的告诉一下,因为刚开始接触swing,所以很多东西都不知道.谢谢

解决方案 »

  1.   

    你的布局管理器 占首要位置,不管你元件的大小设置多少,只要布局管理器用的不合理,还是会变形,  所以先要选好你的布局管理器,或者你可以把布局管理器设置为null,然後用坐标定义元件的位置,这样你元件的大小就起决定作用了
      

  2.   

    我的程序是这样写的:
    public class MyFrame extends JFrame implements ActionListener {
    private JTextField jtfName;
    private JPasswordField jpfPwd;
    private JButton jbtFind;
         public MyFrame() {
    JPanel jpLables = new JPanel();
    jpLables.setLayout(new GridLayout(2, 1));
    jpLables.add(new JLabel("Enter name"));
    jpLables.add(new JLabel("Enter password"));
    jtfName = new JTextField(20);
    jtfName.setSize(50,20);
    jpfPwd = new JPasswordField(20);
    jpfPwd.setSize(20, 20);
    JPanel jpTextFields = new JPanel();
    jpTextFields.setLayout(new GridLayout(2, 1));
    jpTextFields.add(jtfName);
    jpTextFields.add(jpfPwd) JPanel p1 = new JPanel();
    p1.setLayout(new BorderLayout());
    p1.add(jpLables, BorderLayout.WEST);
    p1.add(jpTextFields, BorderLayout.CENTER); JPanel p2 = new JPanel();
    p2.setLayout(new FlowLayout(FlowLayout.CENTER));
    p2.add(jbtFind = new JButton("Find score")); getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1, BorderLayout.CENTER);
    getContentPane().add(p2, BorderLayout.SOUTH); jbtFind.addActionListener(this);
    } public static void main(String[] args) {
    // 得到屏幕长和宽
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int screenWidth = screenSize.width;
    int screenHeight = screenSize.height; // 创建框架
    MyFrame frame = new MyFrame();
    frame.setTitle("运营管理平台");
    frame.setSize(1000, 800); // 取到中间位置
    int x = (screenWidth - frame.getSize().width) / 2;
    int y = (screenHeight - frame.getSize().height) / 2; // 设置frame属性
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocation(x, y); }
      

  3.   


    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.Rectangle;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;public class MyFrame extends JFrame implements ActionListener {
    private JTextField jtfName;
    private JPasswordField jpfPwd;
    private JButton jbtFind; public MyFrame() {
    JPanel jpLables = new JPanel();
    jpLables.setLayout(new GridLayout(2, 1));
    jpLables.add(new JLabel("Enter name"));
    jpLables.add(new JLabel("Enter password"));
    jtfName = new JTextField(20);
    jtfName.setSize(50, 20);
    jpfPwd = new JPasswordField(20);
    jpfPwd.setSize(20, 20);
    JPanel jpTextFields = new JPanel();
    jpTextFields.setLayout(new GridLayout(2, 1));
    jpTextFields.add(jtfName);
    jpTextFields.add(jpfPwd); JPanel p1 = new JPanel();
    p1.setLayout(new BorderLayout());
    p1.add(jpLables, BorderLayout.WEST);
    p1.add(jpTextFields, BorderLayout.CENTER); JPanel p2 = new JPanel();
    p2.setLayout(new FlowLayout(FlowLayout.CENTER));
    p2.add(jbtFind = new JButton("Find score")); /*getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1, BorderLayout.CENTER);
    getContentPane().add(p2, BorderLayout.SOUTH);*/
    getContentPane().setLayout(null);
    p1.setBounds(new Rectangle(300,250,300,80));
    getContentPane().add(p1,null);
    p2.setBounds(new Rectangle(300,350,300,80));
    getContentPane().add(p2,null); jbtFind.addActionListener(this);
    } public static void main(String[] args) {
    // 取得屏幕長和寬
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int screenWidth = screenSize.width;
    int screenHeight = screenSize.height; // 創建框架
    MyFrame frame = new MyFrame();
    frame.setTitle("運營管理平臺");
    frame.setSize(1000, 800); // 取到中間位置
    int x = (screenWidth - frame.getSize().width) / 2;
    int y = (screenHeight - frame.getSize().height) / 2; // 設置frame屬性
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocation(x, y); } public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub }
    }
    這個ok?  你把中文改成簡體~
      

  4.   

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;public class T extends JFrame implements ActionListener {
        private JTextField jtfName;
        private JPasswordField jpfPwd;    
        private JLabel nameLabel;
        private JLabel pwdLabel;        public T() {
            JPanel panel = new JPanel();
            panel.setLayout(null);
            nameLabel = new JLabel("Enter name");
            pwdLabel = new JLabel("Enter password");
            jtfName = new JTextField(20);    
            jpfPwd = new JPasswordField(20);  
          
          
            panel.setLayout(null);
            panel.add(nameLabel);
            panel.add(pwdLabel);
            panel.add(jtfName);
            panel.add(jpfPwd);
            nameLabel.setBounds(20, 20, 100, 25);
            pwdLabel.setBounds(20, 50, 100, 25);
            jtfName.setBounds(150, 20, 100, 25);
            jpfPwd.setBounds(150, 50, 100, 25);
            
            add(panel);
            setTitle("運營管理平臺");
            setSize(400, 400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
         
        }    public static void main(String[] args) {
           
            T frame = new T();          
            frame.setVisible(true);
          
        }    public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub    }
    }
      

  5.   

    用jbcl的XYLayout类
    该包有一个XYConstraints(int, int, int, int)想放哪都行,想多宽也行