[英]Aligning JLabel to Left or Right inside BoxLayout with Y_AXIS Constraint of JPanel
我有一個具有Y_Axis約束的JPanel,因此每當我添加一個新組件時,它都會自動添加到新行上。但是問題是里面的標簽未對齊左或右。 它顯示在JTable上方一定距離處。 JLabel如何以所需的余量顯示。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
然后,我在面板內部添加了JLabel。
JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
panel.add(labelSemester);
標簽之后,我在面板內添加了一個新的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並添加了面板以顯示在框架中
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列寬的代碼。 從附件圖像中可以看到輸出
添加到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 );
閱讀Swing BoxLayout教程中有關修復路線問題的部分,以獲取更多信息。 保留所有Swing基礎知識到本教程的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.