猿问

如何正确定位 JButtons 和大小 JTextFields?

我正在尝试创建一个密码库,但每当我尝试运行它时,JTextFields 都非常小,并且面板有点被JTable.


我尝试过使用尺寸和位置,GridBag但没有任何效果。


这是给我的 IB 计算机科学 IA 的。任何帮助都会很棒。


    JFrame passwordVault;

    JTable passwordTable;

    Object[] columnNames = {"Name of Application", "Application Password", "Description"};

    JTextField appName, appPass, appDesc;

    JButton add, delete, update;

    JLabel nameOfApp, passOfApp, descOfApp;


    passwordVault = new JFrame("Password Vault");

    passwordTable = new JTable();

    JPanel passwordPanel = new JPanel();


    DefaultTableModel tableModel = new DefaultTableModel();

    tableModel.setColumnIdentifiers(columnNames);

    passwordTable.setModel(tableModel);


    nameOfApp = new JLabel("App Name: ");

    passOfApp = new JLabel("App Password: ");

    descOfApp = new JLabel("Description: ");    


    appName = new JTextField();

    appPass = new JTextField();

    appDesc = new JTextField();


    add = new JButton("Add");

    delete = new JButton("Delete");

    update = new JButton("Update");  


    appName.setBounds(400, 220, 100, 25);

    appPass.setBounds(400, 250, 100, 25);

    appDesc.setBounds(400, 280, 100, 25);


    add.setBounds(530, 220, 100, 25);

    update.setBounds(530, 250, 100, 25);

    delete.setBounds(530, 280, 100, 25);


    JScrollPane scrollPane = new JScrollPane(passwordTable);

    scrollPane.setBounds(0, 0, 1000, 200);

    passwordVault.add(scrollPane);


    passwordPanel.add(add);

    passwordPanel.add(update);

    passwordPanel.add(delete);


    passwordPanel.setLayout(new GridBagLayout());



富国沪深
浏览 71回答 1
1回答

森林海

这是您的程序的编辑版本,它按照我认为您尝试的方式格式化布局:        JFrame passwordVault;        JTable passwordTable;        Object[] columnNames = {"Name of Application", "Application Password", "Description"};        JTextField appName, appPass, appDesc;        JButton add, delete, update;        JLabel nameOfApp, passOfApp, descOfApp;        passwordVault = new JFrame("Password Vault");        passwordTable = new JTable();        JPanel passwordPanel = new JPanel();        DefaultTableModel tableModel = new DefaultTableModel();        tableModel.setColumnIdentifiers(columnNames);        passwordTable.setModel(tableModel);        nameOfApp = new JLabel("App Name: ");        passOfApp = new JLabel("App Password: ");        descOfApp = new JLabel("Description: ");            appName = new JTextField();        appPass = new JTextField();        appDesc = new JTextField();        add = new JButton("Add");        delete = new JButton("Delete");        update = new JButton("Update");          // Used setPreferredSize and setLocation instead of setBounds        appName.setLocation(new Point(400, 220));        appName.setPreferredSize(new Dimension(100, 25));        appPass.setLocation(new Point(400, 250));        appPass.setPreferredSize(new Dimension(100, 25));        appDesc.setLocation(new Point(400, 280));        appDesc.setPreferredSize(new Dimension(100, 25));        add.setLocation(new Point(530, 220));        add.setPreferredSize(new Dimension(100, 25));        update.setLocation(new Point(530, 250));        update.setPreferredSize(new Dimension(100, 25));        delete.setLocation(new Point(530, 280));        delete.setPreferredSize(new Dimension(100, 25));        JScrollPane scrollPane = new JScrollPane(passwordTable);        scrollPane.setBounds(0, 0, 1000, 200);        // Create a JPanel to contain the scrollPane and passwordPanel        JPanel framePanel = new JPanel();        framePanel.setLayout(new GridLayout(2, 1));        framePanel.add(scrollPane);        passwordPanel.setLayout(new GridBagLayout());        passwordPanel.add(nameOfApp, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(appName, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(passOfApp, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(appPass, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(descOfApp, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(appDesc, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0,            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(add, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0,                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(update, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        passwordPanel.add(delete, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0,                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));        framePanel.add(passwordPanel);        // Add the framePanel (which contains the other 2 panels) to the JFrame        passwordVault.add(framePanel);        passwordVault.setSize(1000,500);        passwordVault.setLocationRelativeTo(null);        passwordVault.setVisible(true);因此,主要变化是:使用setPreferredSizeandsetLocation代替ssetBounds和sJTextFieldJButton创建了一个 main JPanel(称为 it framePanel)来包含scrollPaneand passwordPanel,然后添加framePanel到JFrameJFrame它通过创建一个 main来帮助组织 a 中的不同元素,而不是仅仅向自身JPanel添加多个JPanels 。JFrame这样,一个主要JPanel的决定框架的整体布局。
随时随地看视频慕课网APP

相关分类

Java
我要回答