#java #swing #jtable #border #jscrollpane
#java #качать #jtable #граница #jscrollpane
Вопрос:
У меня есть a JTable
внутри a JScrollPane
, и я пытаюсь скрыть ViewPortBorder
JScrollPane
его . Для этого я установил для его границы пустую границу, но похоже, что она рисует пустую границу на внешней границе JTable (левая граница первого столбца).
Как я могу скрыть JScrollPane
границу, не скрывая JTable
границу? Проблема только в левой части, границы не перекрываются с правой стороны.
public static void main(String[] args) {
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames);
JScrollPane scroll = new JScrollPane(table);
Border border = BorderFactory.createEmptyBorder(0, 0, 0, 0);
scroll.setViewportBorder(border);
scroll.setBorder(border);
JPanel panel = new JPanel();
panel.add(scroll);
JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
Ответ №1:
JTable
не имеет границы, то, что вы видите, — это граница, предоставляемая панелью прокрутки
(Без границы / с границей)
На самом деле это (одна из причин), почему в левой части таблицы нет линии сетки 😉
Что вы могли бы сделать, это применить a MatteBorder
к таблице
Color color = table.getGridColor();
table.setBorder(new MatteBorder(0, 1, 0, 0, color));
(Без границы / с границей)
Ответ №2:
Вы правы, когда устанавливаете JScrollPane
границу на пустую границу. Однако то, что вы видите на левой границе вашей таблицы, — это просто способ JTable
рисования элементов. Вы заметите, что если вы просто добавите объект сам JTable
по себе, не помещая его в область прокрутки, он рисует его точно так же.
Если вы хотите нарисовать линию в левой части таблицы, вам нужно вручную установить границу.