我JFrame用的BorderLayout布局,里面的一个JPanel用绝对定位布局,但是什么都显示不了,这样做冲突吗???求大神指点!!
import java.awt.BorderLayout;
import java.sql.ResultSet;
import java.sql.Statement;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableModel;
public class kucunchaxun extends JFrame {
private JPanel topPane;
private JPanel bottomPane;
private Border border;
private JComboBox combo;
private JTextField jtf1;
private JButton ok;
private JButton clean;
private Statement stmt;
private ResultSet rs;
private DefaultTableModel model;
private JTable table;
public kucunchaxun()
{
super("ZZZZ");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500,500);
this.setLayout(new BorderLayout());
combo=new JComboBox();
topPane=new JPanel();
bottomPane=new JPanel();
jtf1=new JTextField();
border=BorderFactory.createTitledBorder(border,"查询条件");
topPane.setBorder(border);
combo.addItem("dfdf");
topPane.setLayout(null);
topPane.add(combo);
combo.setBounds(20,20,50,30);
topPane.add(jtf1);
jtf1.setBounds(80,20,50,30);
add(topPane,BorderLayout.NORTH);
add(bottomPane,BorderLayout.CENTER);
this.setVisible(true);
}
public static void main(String args[])
{
new kucunchaxun();
}
}

解决方案 »

  1.   

    首先给你可以显示的代码package csdn.programbbs_622;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.sql.ResultSet;
    import java.sql.Statement;import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.border.Border;
    import javax.swing.table.DefaultTableModel;
    public class kucunchaxun extends JFrame {
    private JPanel topPane;
    private JPanel bottomPane;
    private Border border;
    private JComboBox combo;
    private JTextField jtf1;
    private JButton ok;
    private JButton clean;
    private Statement stmt;
    private ResultSet rs;
    private DefaultTableModel model;
    private JTable table;
    public kucunchaxun()
    {
    super("ZZZZ");
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(500,500);
    this.setLayout(new BorderLayout());
    combo=new JComboBox();
    topPane=new JPanel();
    bottomPane=new JPanel();
    jtf1=new JTextField();
    border=BorderFactory.createTitledBorder(border,"查询条件");
    topPane.setBorder(border);
    combo.addItem("dfdf");
    topPane.setLayout(new GridLayout());//这边出错
    topPane.add(combo);
    combo.setBounds(20,20,50,30);
    topPane.add(jtf1);
    jtf1.setBounds(80,20,50,30);
    add(topPane,BorderLayout.NORTH);
    add(bottomPane,BorderLayout.CENTER);
    this.setVisible(true);
    }
    public static void main(String args[])
    {
    kucunchaxun kc = new kucunchaxun();
    kc.setVisible(true);
    }
    }
      

  2.   

    因为你的 JPanel 中有用 setBounds()方法,设置布局管理为空时候就不能用绝对坐标进行定位。当你将布局设为空的时候,就只能用坐标的形式进行布局,每次添加组件进去,都要设定坐标,而且不要大于
    容器的大小,同时还要指定容器的大小。
      

  3.   

    如果你想要绝对布局的话,那么两个容器的布局都要为空,然后用坐标来表示
    package csdn.programbbs_622;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.Rectangle;
    import java.sql.ResultSet;
    import java.sql.Statement;import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.border.Border;
    import javax.swing.table.DefaultTableModel;
    public class kucunchaxun extends JFrame {
    private JPanel topPane;
    private JPanel bottomPane;
    private Border border;
    private JComboBox combo;
    private JTextField jtf1;
    private JButton ok;
    private JButton clean;
    private Statement stmt;
    private ResultSet rs;
    private DefaultTableModel model;
    private JTable table;
    public kucunchaxun()
    {
    super("ZZZZ");
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setBounds(50, 50, 600, 600);
    this.setLayout(null);
    combo=new JComboBox();
    topPane=new JPanel();
    bottomPane=new JPanel();
    jtf1=new JTextField();
    border=BorderFactory.createTitledBorder(border,"查询条件");
    topPane.setBorder(border);
    combo.addItem("dfdf");
    topPane.setLayout(null);
    combo.setBounds(30, 50, 50, 30);
    topPane.setBounds(30, 50, 360, 310);

    jtf1.setBounds(new Rectangle(80, 50, 150, 30));
    topPane.add(combo);
    topPane.add(jtf1);

    add(topPane);
    add(bottomPane);
    this.setVisible(true);
    }
    public static void main(String args[])
    {
    new kucunchaxun();
    }
    }