簡體   English   中英

JTable Cloumn不再專注

[英]JTable cloumn doesn't get focused anymore

最近,我在JTable中的一個列上遇到了一個小問題:由於我編輯了它的DefaultTableCellRenderer,因此當我在表中聚焦一行時,密碼列沒有被聚焦。 是我的代碼的屏幕截圖

inputsTable.getColumn("Passwort").setCellRenderer(new DefaultTableCellRenderer(){

        private final String ASTERISKS = "*";
        public Component getTableCellRendererComponent(JTable table,
                                                       Object value,
                                                       boolean isSelected,
                                                       boolean hasFocus,
                                                       int row,
                                                       int column) {
            int length =0;
            if (value instanceof String) {
                length =  ((String) value).length();
            } else if (value instanceof char[]) {
                length = ((char[])value).length;
            }
            setText(asterisks(length));
            return this;
        }
        private String asterisks(int length) {
            if (length > ASTERISKS.length()) {
                StringBuilder sb = new StringBuilder(length);
                for (int i = 0; i < length; i++) {
                    sb.append('*');
                }
                return sb.toString();
            } else {
                return ASTERISKS.substring(0, length);
            }
        }
    });

我已經嘗試了一些不同的選擇,但是不幸的是,它們並沒有幫助我。 你們最終有什么頭緒嗎,也許在JTable中可以更好地實現密碼列,而不會出現此問題? 提前致謝!

發布的DefaultTableCellRenderer實現不基於當前狀態(尤其是isSelected參數)設置任何格式。 要保留默認格式,請考慮在自定義之前調用父方法。

                public Component getTableCellRendererComponent(JTable table,
                                                               Object value,
                                                               boolean isSelected,
                                                               boolean hasFocus,
                                                               int row,
                                                               int column) {
                    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
                    //do your customization here
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM