Muh*_*nan 3 java swing jlabel layout-manager boxlayout
我有一个带有 Y_Axis 约束的 JPanel,这样每当我添加一个新组件时,它都会自动添加到新行上。但问题是里面的标签没有左对齐或右对齐。它显示在 JTable 上方一定距离处。如何在所需的 Alginment 中显示 JLabel。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)
然后我在面板内添加了一个 JLabel。
JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
panel.add(labelSemester);
Run Code Online (Sandbox Code Playgroud)
标签后,我在面板内添加了一个新的 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));
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个 JFrame 并添加了面板以显示在框架中
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()
Run Code Online (Sandbox Code Playgroud)
注意:我添加了自动调整 JTable 列宽的代码。 输出可以从附加的图像中看到

添加的所有组件都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 );
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读 Swing BoxLayout 教程中关于修复对齐问题的部分。保留指向本教程的链接,以便了解所有 Swing 基础知识。
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |