使用 JPanel 的 Y_AXIS 约束在 BoxLayout 内将 JLabel 向左或向右对齐
Aligning JLabel to Left or Right inside BoxLayout with Y_AXIS Constraint of JPanel
我有一个约束为 Y_Axis 的 JPanel,因此每当我添加一个新组件时,它都会自动添加到一个新的 Line.But 问题是里面的标签没有左对齐或对。它显示在 JTable 上方的某个距离处。 JLabel 如何在所需的 Alginment 显示。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
然后我在面板中添加了一个 JLabel。
JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
panel.add(labelSemester);
在label之后,我在panel里面添加了一个新的JTable,
// Column Names for the Table
Object[] col_names = {"ID", "Name", "CH", "Marks", "Grade"};
// row data for the table
Object[][] table_rows = {{"CS123","Introduction to Computing",3,80,"A-"}};// One row only
JTable table = new JTable(table_rows, col_names);
panel.add(new JScrollPane(table));
然后我添加了一个JFrame,并添加了要在框架中显示的Panel
JFrame frame = new JFrame();
// frame Title
frame.setTitle("DMC");
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// adding panel inside frame
frame.add(panel);
// displaying frame
frame.show()
注意:
我添加了用于自动调整 JTable 列宽的代码。
Output can be seen from attached Image
添加到 BoxLayout
的所有组件都需要相同的 alignmentX
,否则你会得到一些奇怪的布局:
//JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
JLabel labelSemester = new JLabel("Semester 1: ");
label.semester.setAlignmentX(JLabel.LEFT_ALIGNMENT);
panel.add(labelSemester);
...
JTable table = new JTable(table_rows, col_names);
//panel.add(new JScrollPane(table));
JScrollPane scrollPane = new JScrollPane( table );
scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);
panel.add( scrollPane );
阅读 Fixing Alignment Problems 上的 Swing BoxLayout 教程部分了解更多信息。为所有 Swing 基础知识准备一份 link 教程。
我有一个约束为 Y_Axis 的 JPanel,因此每当我添加一个新组件时,它都会自动添加到一个新的 Line.But 问题是里面的标签没有左对齐或对。它显示在 JTable 上方的某个距离处。 JLabel 如何在所需的 Alginment 显示。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
然后我在面板中添加了一个 JLabel。
JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
panel.add(labelSemester);
在label之后,我在panel里面添加了一个新的JTable,
// Column Names for the Table
Object[] col_names = {"ID", "Name", "CH", "Marks", "Grade"};
// row data for the table
Object[][] table_rows = {{"CS123","Introduction to Computing",3,80,"A-"}};// One row only
JTable table = new JTable(table_rows, col_names);
panel.add(new JScrollPane(table));
然后我添加了一个JFrame,并添加了要在框架中显示的Panel
JFrame frame = new JFrame();
// frame Title
frame.setTitle("DMC");
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// adding panel inside frame
frame.add(panel);
// displaying frame
frame.show()
注意: 我添加了用于自动调整 JTable 列宽的代码。 Output can be seen from attached Image
添加到 BoxLayout
的所有组件都需要相同的 alignmentX
,否则你会得到一些奇怪的布局:
//JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
JLabel labelSemester = new JLabel("Semester 1: ");
label.semester.setAlignmentX(JLabel.LEFT_ALIGNMENT);
panel.add(labelSemester);
...
JTable table = new JTable(table_rows, col_names);
//panel.add(new JScrollPane(table));
JScrollPane scrollPane = new JScrollPane( table );
scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);
panel.add( scrollPane );
阅读 Fixing Alignment Problems 上的 Swing BoxLayout 教程部分了解更多信息。为所有 Swing 基础知识准备一份 link 教程。