vertical horizontal agregar java swing jtable jscrollpane

java - horizontal - Cómo deshacerse del borde con JTable/JScrollPane



jtable scroll vertical (5)

Si ejecuta la pequeña muestra a continuación, verá un borde alrededor de la región central. No estoy seguro de por qué se muestra este borde.

Sucede cuando una JTable está en un JScrollPane. Intenté varias cosas para eliminarlo, pero hasta ahora no tuve suerte. Una JTable sin el JScrollPane no muestra ningún borde.

Vea la muestra a continuación. 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)); } }


Creo que la solución correcta es establecer el límite en viewportView en ''null''.


Curiosamente, el borde desaparece cuando elimina esta línea:

sp.setBorder(null);


Estaba buscando la respuesta para la misma pregunta pero las respuestas anteriores no podían ... así que encontré una respuesta mejor:

JScrollPane jsp = new JScrollPane(); //ur other codes jsp.setViewportBorder(null);


Para JTable table.setIntercellSpacing(new Dimension(0, 0)) funciona.


Use BorderFactory.createEmptyBorder () en lugar de nulo ...

mediante el uso:

sp.setBorder(createEmptyBorder());

funciona.

Su método principal se convierte en:

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); }