Si vous exécutez le petit échantillon ci-dessous, vous verrez une bordure autour de la région centrale. Je ne sais pas pourquoi cette frontière s'affiche.
Cela se produit lorsqu'un JTable se trouve dans un JScrollPane. J'ai essayé différentes choses pour l'enlever mais jusqu'à présent, pas de chance. Une JTable sans JScrollPane ne montre aucune bordure.
Voir l'exemple ci-dessous. 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));
}
}
Utilisez BorderFactory.createEmptyBorder () au lieu de null ...
en utilisant:
sp.setBorder(createEmptyBorder());
ça marche.
Votre méthode principale devient:
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);
}
Je cherchais la réponse à la même question mais les réponses ci-dessus ne pouvaient pas faire ... alors j'ai trouvé une meilleure réponse:
JScrollPane jsp = new JScrollPane();
//ur other codes
jsp.setViewportBorder(null);
Fait intéressant, la bordure disparaît lorsque vous supprimez cette ligne:
sp.setBorder(null);
Je pense que le correctif correct consiste à définir la bordure sur viewportView sur "null".
Pour JTable table.setIntercellSpacing(new Dimension(0, 0))
fonctionne.