Утилизировать элементы в приложении Swing - PullRequest
1 голос
/ 21 мая 2011

И что спросить, как лучше расположить элементы пользовательского интерфейса в Swing?

Я пробовал разные макеты (BorderLayout, FlowLayout ...), но я мог быстро и точно располагать элементы именно в той точке экрана, которая мне нужна. Я использовал метод 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 ]

2 голосов
/ 21 мая 2011

Ну, проще всего было бы просто сказать:

mySwingElement = null

Если вы хотите удалить элементы из панелей, вы можете попробовать метод:

remove(int index);

также вы можете использовать:

mySwingElement.dispose()

Он освободит все ресурсы, связанные с ним

Если вы хотите просто сделать их невидимыми:

 setVisible(false);
0 голосов
/ 22 мая 2011

пожалуйста, прочитайте

1 / JTable тонн примеров http://www.java2s.com/Code/Java/Swing-JFC/CatalogSwing-JFC.htm

2 / поместите JTable в JScrollPane

3 / и в начале начинайте размещать JComponets, используя BorderLayout

0 голосов
/ 22 мая 2011

Я решил свою проблему.Я скачал графический редактор Jigloo и использовал компонент 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();
        }
    }

}
0 голосов
/ 21 мая 2011

Если вы хотите иметь абсолютное расположение компонентов качания, вы можете использовать макет null (см. здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...