Ако пуснете малката проба под вас, ще видите граница около централния регион. Не съм сигурен защо тази граница се показва.
Случва се, когато JTable е в JScrollPane. Опитах различни неща, за да го премахна, но засега няма късмет. JTable без JScrollPane не показва граница.
Вижте пример по-долу. TIA.
public class TestScrollPane extends JFrame {
public static void main(String[] args) {
JFrame frame = new TestScrollPane();
JPanel panel = new JPanel();
JTable table = new JTable();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("NORTH"), BorderLayout.NORTH);
panel.add(new JLabel("SOUTH"), BorderLayout.SOUTH);
JScrollPane sp = new JScrollPane(table);
// None of these have any effect
sp.setBorder(null);
sp.getInsets().set(0, 0, 0, 0);
sp.setViewportBorder(null);
sp.getViewport().setBorder(null);
sp.getViewport().getInsets().set(0, 0, 0, 0);
sp.getViewport().setOpaque(true);
panel.add(sp, BorderLayout.CENTER);
// Adding the table alone shows no border
// panel.add(table, BorderLayout.CENTER);
frame.add(panel);
frame.setVisible(true);
}
public TestScrollPane() throws HeadlessException {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setMinimumSize(new Dimension(100, 100));
}
}
Отговори:
53 за отговор № 1Използвайте BorderFactory.createEmptyBorder () вместо null ...
като се използва:
sp.setBorder(createEmptyBorder());
работи.
Вашият основен метод става:
public static void main(String[] args) {
JFrame frame = new TestScrollPane();
JPanel panel = new JPanel();
JTable table = new JTable();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("NORTH"), BorderLayout.NORTH);
panel.add(new JLabel("SOUTH"), BorderLayout.SOUTH);
JScrollPane sp = new JScrollPane(table);
sp.setBorder(BorderFactory.createEmptyBorder());
panel.add(sp, BorderLayout.CENTER);
frame.add(panel);
frame.setVisible(true);
}
5 за отговор № 2
Търсех отговора на същия въпрос, но по-горе отговорите не можах да направя ... затова намерих по-добър отговор:
JScrollPane jsp = new JScrollPane();
//ur other codes
jsp.setViewportBorder(null);
4 за отговор № 3
Интересно е, че границата изчезва, когато премахнете този ред:
sp.setBorder(null);
0 за отговор № 4
Мисля, че правилното поправяне е да зададете границата на viewportView на "null".
0 за отговор № 5
За JTable table.setIntercellSpacing(new Dimension(0, 0))
върши работа.