Я создаю приложение, отображает информацию из базы данных в виде таблицы. Поскольку количество строк в таблице может меняться, я создал общий метод, который создаст одну строку таблицы, либо заголовок таблицы, либо отдельные строки. Я сделал это с помощью JPanel.Удалить место между JPanels
Моя проблема заключается в том, что каждый раз, когда я добавляю новую строку в таблицу, между строками существует разрыв. Я знаю, что могу использовать таблицу, но это также опыт обучения для меня, используя swing, поэтому я хотел бы сделать это, используя JPanels, если это возможно.
Ниже приведен способ, чтобы создать строку:
public static JPanel customersTable(){
FlowLayout FlowCustTable = new FlowLayout();
FlowCustTable.setHgap(1);
FlowCustTable.setVgap(0);
JPanel customersTable = new JPanel(FlowCustTable);
JTextField surname = new JTextField();
FieldSetup(surname, 120, 25, " Surname", Color.CYAN, false);
JTextField firstname = new JTextField();
FieldSetup(firstname, 120, 25, " Firstname", Color.CYAN, false);
JTextField mobile = new JTextField();
FieldSetup(mobile, 120, 25, " Mobile", Color.CYAN, false);
JTextField homePhone = new JTextField();
FieldSetup(homePhone, 120, 25, " Home Phone", Color.CYAN, false);
JTextField address = new JTextField();
FieldSetup(address, 280, 25, " Address", Color.CYAN, false);
JTextField postcode = new JTextField();
FieldSetup(postcode, 120, 25, " Postcode", Color.CYAN, false);
customersTable.add(surname);
customersTable.add(firstname);
customersTable.add(mobile);
customersTable.add(homePhone);
customersTable.add(address);
customersTable.add(postcode);
return customersTable;
}
Это метод используется для настройки JTextFields:
public static void FieldSetup(JTextField field, int x, int y, String text, Color color, Boolean Editable){
field.setText(text);
field.setBackground(color);
field.setPreferredSize(new Dimension(x, y));
field.setEditable(Editable);
Border border = BorderFactory.createLineBorder(Color.BLACK);
field.setBorder(border);
}
и это метод для создания финального стола и Пользовательский интерфейс:
public static void CustomersGui(){
final JFrame frame = new JFrame("Customers");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel customers = new JPanel();
customers.add(customersTable());
customers.add(customersTable());
frame.setContentPane(customers);
frame.setSize(1200,500);
frame.setVisible(true);
}
Для этого вопроса я добавил 2 экземпляра заголовка e, но тот же принцип все еще применяется.
Я пробовал setHgap и setVgap JPanel, и пока это действительно влияет на промежуток, он не сделает его равным нулю.
Попробуйте изменить пробел в 'customers'. Может быть, лучше подходит для BoxLayout вместо стандартного FlowLayout, если вы хотите добавить компоненты вертикально. FlowLayout добавляет их по горизонтали. Переполнение приведет к тому, что он будет отображаться вертикально, но вы не хотите зависеть от этого, когда BoxLayout уже предложил функциональность, которую вы хотите –
1) Для лучшей помощи раньше, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример). 2) См. [Я должен избегать использования методов Set (Preferred | Maximum | Minimum) в Java Swing?] (Http://stackoverflow.com/q/7229226/418556) (Да.) –
@AndrewThompson Я попытался придерживаться принципов MCVE. Могу ли я спросить, какую информацию я мог бы исключить, чтобы лучше соблюдать эти принципы? –