Java: объясните поведение перекраски, как управлять им при изменении размера - PullRequest
0 голосов
/ 09 марта 2020

Вот очень простой JTable на примере JFrame, который я извлек с другого веб-сайта.

import javax.swing.*;    
public class JTableSimpleSample {    
    JFrame f;    
    JTableSimpleSample(){    
    f=new JFrame();    
    String data[][]={ {"101","Amit","670000"},    
                          {"102","Jai","780000"},    
                          {"101","Sachin","700000"}};    
    String column[]={"ID","NAME","SALARY"};         
    JTable jt=new JTable(data,column);    
    jt.setBounds(30,40,200,300);          
    JScrollPane sp=new JScrollPane(jt);    
    f.add(sp);          
    f.setSize(300,400);    
    f.setVisible(true);    
}     
public static void main(String[] args) {    
    new JTableSimpleSample();    
}    
} 

При изменении размера этого окна поведение немного отличается в зависимости от того, какой край используется для изменения размера.

Top - измените размер фрейма, щелкнув край top , и он выглядит довольно чистым, за исключением того, что кажется, что нижний край JFrame непрерывно перекрашивается, и выглядит так, как будто существует несколько строк.

Bottom - измените размер рамки, щелкнув край bottom , выглядит довольно неплохо, так как его увеличение показывает черную область, пока рамка не перекрашивается. В зависимости от того, как быстро вы изменяете размер рамки, определяется, какая часть черной области видна.

Справа - измените размер рамки, нажав вправо , край очень похож на тот, который используется при изменении размера нижнего края.

Влево - измените размер рамки, нажав влево край выглядит ужасно. Это не только похоже на изменение размера с использованием верхней части, показывая несколько строк на правом краю, но иногда сами данные выглядят беспорядочно.

Использование любого из углов приводит к комбинации 2 из любого из вышеупомянутых сценариев ios.

Вопрос / Цель: 1 - Почему такое разное поведение?

2 - Можно ли сделать так, чтобы при изменении размера отображался только контур рамки, а не черный фон при изменение размера, сделать это прозрачным. Что-то вроде следующего, если для изменения размера используется нижний правый угол. Красные линии используются для обозначения цели, но она вполне может оставаться черной:

Outline Example

Я сделал обзор Черный контур изменяя размер JFrame , но не полностью понимая использование таймера. Не был уверен, существует ли свойство или оно будет управляться через обработчик мыши, связанный с JFrame.

...