在Swing应用程序中处理元素

时间:2011-05-21 16:10:50

标签: java swing

我想问一下在Swing中处理UI元素的最佳方法是什么?

我尝试了不同的布局(BorderLayoutFlowLayout ...)但是我可以快速处理元素,并在屏幕的那个位置处理我需要的内容。我使用方法setLocation(int x,int y)但它不起作用。

我的意思是位置。我尝试了setLayout(null)它帮助了我,但是JTable列标题不可见。这是我的代码(可编辑)

public class Test1 extends JFrame{
public JTable tbGoods=new JTable();
public JScrollPane pane;
DefaultTableModel aModel;
public Test1(){
    setTitle("Make buy");
    setSize(600,600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     getContentPane().setLayout(null);
     setVisible(true); 
     DisplayAllGoods(null);
}
private void DisplayAllGoods(List<Object> objectList) {
    aModel = new DefaultTableModel() {
    @Override
    public boolean isCellEditable(int row, int column) {
    return true;
    }
    };
    //setting the column name
    Object[] tableColumnNames = new Object[3];
    tableColumnNames[0]="User";
    tableColumnNames[1]="Good";
    tableColumnNames[2]="Price";

    aModel.setColumnIdentifiers(tableColumnNames);
    tbGoods.setAutoCreateRowSorter(true);
    tbGoods.setBounds(93, 293, 388, 143);   
    pane=new JScrollPane(tbGoods);  
    getContentPane().add(tbGoods);
    getContentPane().add(pane);
    this.tbGoods.setModel(aModel);
}
public static void main(String[] args) {
JFrame gf=new Test1();
gf.setLocationRelativeTo(null);
gf.setVisible(true);}}

4 个答案:

答案 0 :(得分:2)

最简单的方法就是说:

mySwingElement = null

如果要从面板中删除元素,可以尝试以下方法:

remove(int index);

你也可以使用:

mySwingElement.dispose()

它将释放与其相关的所有资源

如果你想让它们不可见:

 setVisible(false);

答案 1 :(得分:0)

如果您想要摆动组件的绝对定位,您可能需要使用null布局(请参阅here)。

答案 2 :(得分:0)

我解决了我的问题。我下载了Jigloo GUI编辑器并使用了AbsolutLayout组件(将元素放置在我想要的位置)并进入JScrollPane我放置了JTable。

    public class NewJFrame2 extends javax.swing.JFrame {
    private JScrollPane jScrollPane1;
    private JTable jTable1;

    /**
    * Auto-generated main method to display this JFrame
    */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                NewJFrame2 inst = new NewJFrame2();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }

    public NewJFrame2() {
        super();
        initGUI();
    }

    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            getContentPane().setLayout(null);
            {
                jScrollPane1 = new JScrollPane();
                getContentPane().add(jScrollPane1);
                jScrollPane1.setBounds(30, 37, 339, 176);
                {
                    TableModel jTable1Model = 
                        new DefaultTableModel(
                                new String[][] { { "One", "Two" }, { "Three", "Four" } },
                                new String[] { "Column 1", "Column 2" });
                    jTable1 = new JTable();
                    jScrollPane1.setViewportView(jTable1);
                    jTable1.setModel(jTable1Model);
                }
            }
            pack();
            setSize(400, 300);
        } catch (Exception e) {
            //add your error handling code here
            e.printStackTrace();
        }
    }

}

答案 3 :(得分:0)

请阅读

1 / JTable吨示例http://www.java2s.com/Code/Java/Swing-JFC/CatalogSwing-JFC.htm

2 /将你的JTable放到JScrollPane

3 /并在开始时使用BorderLayout

开始放置JComponets