那位高手帮忙看一下,如何让组件居中显示
下面代码可以直接运行
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;class exper_4_1
{
JFrame frame=new JFrame("frame");
JPanel p1,p2,p3,p4,p5;
JLabel lab1,lab2;
JTextField t1,t2;
JButton b1,b2,b3;
public static void main(String[] args) 
{
exper_4_1 exp=new exper_4_1();
exp.go();
}
public void go()
{

p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
p5=new JPanel(); lab1=new JLabel("Source");
lab2=new JLabel("Target");

t1=new JTextField(15);
t2=new JTextField(15);

p1.add(lab1);
p1.add(t1);
        p2.add(lab2);
p2.add(t2);
p3.setLayout(new GridLayout(2,1));
p3.add(p1);
p3.add(p2); b1=new JButton("Clear");
b2=new JButton("Copy");
b3=new JButton("Close");

p4.add(b1);
p4.add(b2);
p4.add(b3); p5.setLayout(new GridLayout(2,1));
p5.add(p3);
p5.add(p4); ActionListener b=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JButton b=(JButton)e.getSource();
if(b==b1)
{
t1.setText("");
t2.setText("");
}
else if(b==b2)
{
t2.setText(t1.getText());
}
else
{
  System.exit(0);  
}
}
};
b1.addActionListener(b);
b2.addActionListener(b);
b3.addActionListener(b);
Container cp=frame.getContentPane();
cp.setLayout(new BorderLayout());
cp.add(p5,"Center"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}代码直接可以运行,但我想让所有组件都距窗体边界有一段距离,类似于“回”结构,那位高手帮忙指点一下,拜托拜托~~

解决方案 »

  1.   

    那就中间用flowlayout,居中,然后把你的组件放进这个flowlayout
      

  2.   

    你是说窗体弹出位置是屏幕的中央吗?
    frame.setLocationRelativeTo(null);
    或者Toolkit tkt= Toolkit.getDefaultToolkit();   
            Dimension screenSize = tkt.getScreenSize();   
            int screenHeight = screenSize.height;   
            int screenWidth = screenSize.width;    
            frame.setLocation(screenWidth/2, screenHeight/2);    
      

  3.   

     窗体居中:方法一:
    frame.setLocationRelativeTo(null);方法二:
    Dimension winSize = Toolkit.getDefaultToolkit().getScreenSize(); //屏幕分辨率
    frame.setLocation((winSize.width - frame.getWidth()) / 2, (winSize.height - frame.getHeight()) / 2); //窗口定位方法三:Toolkit kit=Toolkit.getDefaultToolkit();
    Dimension screenSize=kit.getScreenSize();
    setBounds(
    screenSize.width/4,
    screenSize.height/4,
    screenSize.width/2,
    screenSize.height/2 
      

  4.   

    说了用flowlayout嘛,公司电脑没有java环境,不好帮你测试,回家帮你看看
      

  5.   

    我建议你用netbeans呀,那样里面的布局GroupLayout不用自己写,托拉组件自动就有代码了。。
    下面是个例子。。
    import java.io.File;
    import javax.swing.JFileChooser;
    import javax.swing.JOptionPane;/**
     *
     * @author Hongyang Sun
     */
    public class SubFrame extends javax.swing.JFrame {
        static boolean loadMotifFile = false;
        static boolean loadRegulatorFile = false;
        static boolean loadGoFile = false;
        boolean loadCondAnnotationCategoryFile = false;
        boolean showFinishPop = false;
        
        /** Creates new form NewFrame */
        public SubFrame() {
            initComponents();
        }    /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {        jLabel3 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
            jButton1 = new javax.swing.JButton();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Example");        jLabel3.setText("Output Data:");        jTextField1.setText("Necessary");
            jTextField1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jTextField1ActionPerformed(evt);
                }
            });        jButton1.setText("Browse");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(74, 74, 74)
                    .addComponent(jLabel3)
                    .addGap(74, 74, 74)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 257, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(110, Short.MAX_VALUE))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap(261, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(231, 231, 231))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(52, 52, 52)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel3))
                    .addGap(39, 39, 39)
                    .addComponent(jButton1)
                    .addGap(25, 25, 25))
            );        pack();
        }// </editor-fold>    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // TODO add your handling code here:
    }                                               //For parsing DISTILLER output
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            File f = null;
            String fileName = "";
            try {
                f = new File(fileName);
            } catch (Exception ex) {
                f = null;
            }        JFileChooser fileChooser = new JFileChooser();        fileChooser.setDialogTitle("Select a file to open...");
            fileChooser.setFileHidingEnabled(false);
            fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            fileChooser.setSelectedFile(f);
            //fileChooser.addChoosableFileFilter(new ImageFileFilter(".m"));        int choice = fileChooser.showOpenDialog(this);
            if (choice == JFileChooser.APPROVE_OPTION) {
                fileName = fileChooser.getSelectedFile().getAbsolutePath();
                System.out.println("Starting with file: " + fileName);            jTextField1.setText(fileName);
            }
    }                                            //Save the XML file to a directory    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {            public void run() {
                    new SubFrame().setVisible(true);
                }
            });
        }    // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JTextField jTextField1;
        // End of variables declaration
    }
      

  6.   

    package com.xg.hsg;import java.awt.*;import javax.swing.*;
    import java.awt.event.*;class exper_4_1 {
    JFrame frame = new JFrame("frame");
    JPanel p1, p2, p3, p4, p5;
    JLabel lab1, lab2;
    JTextField t1, t2;
    JButton b1, b2, b3; public static void main(String[] args) {
    exper_4_1 exp = new exper_4_1();
    exp.go();
    } public void go() { p1 = new JPanel();
    p2 = new JPanel();
    p3 = new JPanel();
    p4 = new JPanel();
    p5 = new JPanel(); lab1 = new JLabel("Source");
    lab2 = new JLabel("Target"); t1 = new JTextField(15);
    t2 = new JTextField(15); p1.add(lab1);
    p1.add(t1);
    p2.add(lab2);
    p2.add(t2); p3.setLayout(new GridLayout(2, 1));
    p3.add(p1);
    p3.add(p2); b1 = new JButton("Clear");
    b2 = new JButton("Copy");
    b3 = new JButton("Close"); p4.add(b1);
    p4.add(b2);
    p4.add(b3); p5.setLayout(new GridLayout(2, 1));
    p5.add(p3);
    p5.add(p4); ActionListener b = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    JButton b = (JButton) e.getSource();
    if (b == b1) {
    t1.setText("");
    t2.setText("");
    } else if (b == b2) {
    t2.setText(t1.getText());
    } else {
    System.exit(0);
    }
    }
    };
    b1.addActionListener(b);
    b2.addActionListener(b);
    b3.addActionListener(b);

    frame.add(new BorderLayout().CENTER, p5);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 150); frame.setVisible(true);
    }
    }小弟也刚学java 错了别见怪!