代码之家  ›  专栏  ›  技术社区  ›  NullPointerException

JavaSWT:表格滚动在对话框中不起作用

  •  0
  • NullPointerException  · 技术社区  · 6 年前

    我需要在一个对话框中添加一个表,然后用假内容填充它。当显示对话框时,表格没有滚动条,因此末尾的内容不可见。

    也许这与对话框无法调整大小有关?我找不到调整对话框大小的方法。有可能吗?

    这是我打开对话框的方式:

    BetClubDialog dialog = new BetClubDialog(getShell(), SWT.DIALOG_TRIM | SWT.PRIMARY_MODAL, null);
    String result = dialog.open();
    

    public class BetClubDialog extends Dialog {
    
        protected String result;
        protected Shell shell;
        private Club clubToEdit;
    
        /**
         * Create the dialog.
         * @param parent
         * @param style
         */
        public BetClubDialog(Shell parent, int style, Club clubToEdit) {
            super(parent, style);
            this.clubToEdit = clubToEdit;
            setText("Gestionar Peña de Apuesta");
        }
    
        /**
         * Open the dialog.
         * @return the result
         */
        public String open() {
            createContents();
    
            Rectangle parentSize = getParent().getBounds();
            Rectangle shellSize = shell.getBounds();
            int x = parentSize.x + (parentSize.width - shellSize.width) / 2;
            int y = (int) (parentSize.y + (parentSize.height - shellSize.height) / 3.5);
            shell.setLocation(new Point(x, y));
            shell.setLayout(new GridLayout(1, false));
    
            Composite topComposite = new Composite(shell, SWT.NONE);
            topComposite.setLayout(new GridLayout(2, false));
            topComposite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    
            Label lblClubName = new Label(topComposite, SWT.NONE);
            lblClubName.setText("Peña:");
    
            Label lblClubNameValue = new Label(topComposite, SWT.NONE);
            lblClubNameValue.setText("Dummy");
    
            Composite clubComposite = new Composite(shell, SWT.NONE);
            clubComposite.setLayout(new GridLayout(1, false));
            clubComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    
            Table membersTable = new Table(clubComposite, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION);
            membersTable.setHeaderVisible(true);
            GridData gd_membersTable = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
            gd_membersTable.minimumHeight = -1;
            membersTable.setLayoutData(gd_membersTable);
    
            TableColumn tblclmnName = new TableColumn(membersTable, SWT.NONE);
            tblclmnName.setWidth(150);
            tblclmnName.setText("Nombre");
    
            TableColumn tblclmnCommonPhoneNumber = new TableColumn(membersTable, SWT.NONE);
            tblclmnCommonPhoneNumber.setWidth(120);
            tblclmnCommonPhoneNumber.setText("Teléfono");
    
            TableColumn tblclmnCommonMoney = new TableColumn(membersTable, SWT.NONE);
            tblclmnCommonMoney.setWidth(150);
            tblclmnCommonMoney.setText("Participación Habitual");   
    
            // populate Table
            for (int i=0; i<50; i++) {
                TableItem tableItem = new TableItem(membersTable, SWT.NONE);                    
                tableItem.setText(new String[] {"person "+i, "610610620", "100"});
            }                       
    
            shell.open();
            shell.layout();
            Display display = getParent().getDisplay();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
            }
    
            return result;
        }
    
        /**
         * Create contents of the dialog.
         */
        private void createContents() {
            shell = new Shell(getParent(), getStyle());
            shell.setSize(550, 550);
            shell.setText(getText());
        }
    }
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   NullPointerException    6 年前

    好吧,我终于解决了,去掉这一行:

     gd_membersTable.minimumHeight = -1;