如何将JPanel中的JTable调整至靠左显示?使用setBounds无效如何解决?
问题原因
- 你的
PanelSucursales默认使用FlowLayout布局,该布局默认将组件居中对齐,所以表格无法靠左 - 你重复将
JTable组件添加到PanelSucursales和JScrollPane中,Swing组件只能绑定一个父容器,重复添加会导致组件渲染异常 - 你仅给
JTabbedPane设置了setBounds,但PanelSucursales自身有独立的布局管理,内部组件不受外层null布局控制,所以直接给表格设置setBounds不会生效
修复步骤
- 删除重复添加
JTable的代码,仅保留带表格的滚动窗格的添加逻辑 - 将
PanelSucursales的布局改为左对齐的FlowLayout,即可实现表格靠左显示
修改后核心代码
// 初始化JPanel时指定左对齐的FlowLayout JPanel PanelSucursales = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 删掉重复添加的代码:PanelSucursales.add(TablaSucursales); // 仅添加带表格的滚动窗格 PanelSucursales.add(new JScrollPane(TablaSucursales));
如果需要让表格铺满左侧剩余空间,还可以将PanelSucursales的布局改为BorderLayout,将滚动窗格添加到WEST区域:
JPanel PanelSucursales = new JPanel(new BorderLayout()); PanelSucursales.add(new JScrollPane(TablaSucursales), BorderLayout.WEST);
完整修改后代码
package Modulos; import paneles.*; import javax.swing.*; import java.awt.*; public class ModuloAdmin extends JFrame { public ModuloAdmin(){ //Crear tabla String[][] datosprueba = { {"001","Carlitos", "Casa","51202011"}, {"001","Carlitos", "Casa","51202011"} }; String[] TituloColumna = {"Código", "Nombre", "Dirección", "Teléfono"}; JTable TablaSucursales = new JTable(datosprueba,TituloColumna); //Contenido de las pestañas // 修改为左对齐的FlowLayout JPanel PanelSucursales = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 仅添加带表格的滚动窗格,删除重复添加JTable的代码 PanelSucursales.add(new JScrollPane(TablaSucursales)); JPanel PanelProductos = new JPanel(); PanelProductos.add(new JLabel("Panel productos")); JPanel PanelClientes = new JPanel(); PanelClientes.add(new JLabel("Panel Clientes")); JPanel PanelVendedores = new JPanel(); PanelVendedores.add(new JLabel("Panel Vendedores")); //CREACION DE PESTAÑAS JTabbedPane Pestanias = new JTabbedPane(); Pestanias.setBounds(20,80,700,700); Pestanias.add("Sucursales",PanelSucursales); Pestanias.add("Productos",PanelProductos); Pestanias.add("Clientes", PanelClientes); Pestanias.add("Vendedores",PanelVendedores); //vENTANA MODULO DE ADMIN JFrame VentanaModuloAdmin = new JFrame(); VentanaModuloAdmin.add(Pestanias); VentanaModuloAdmin.setLayout(null); VentanaModuloAdmin.setSize(800,850); VentanaModuloAdmin.setLocationRelativeTo(null); VentanaModuloAdmin.setTitle("Módulo de administrador"); VentanaModuloAdmin.setVisible(true); VentanaModuloAdmin.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
内容的提问来源于stack exchange,提问作者Diego Huite
相关产品推荐
相关产品推荐

