簡體   English   中英

使用JPanel的Y_AXIS約束在BoxLayout中將JLabel左右對齊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM