2013-02-19 60 views
0

我試圖將JLabel和JScrollPane(包含JTextArea)對齊到JPanel的左側。當我把JTextArea直接放在面板中時,對齊是正確的。如果JTextArea位於滾動窗格中,則對齊方式不正確。在BoxLayout中將JLabel與JScrollPane對齊

import javax.swing.BoxLayout; 
import javax.swing.JDialog; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

public class Main { 

    public static void main(String[] args) { 
     JDialog dialog = new JDialog(); 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 
     panel.add(new JLabel("My Label")); 
     // panel.add(new JTextArea(3, 15)); 
     panel.add(new JScrollPane(new JTextArea(3, 15))); 
     dialog.add(panel); 
     dialog.pack(); 
     dialog.setVisible(true); 
    } 
} 

下面的第一張圖片是滾動窗格,第二張圖片是沒有它的。我如何正確對齊滾動窗格?

Unaligned dialogAligned dialog

回答

2

嘗試使用alignmentX

import java.awt.Component; 

import javax.swing.*; 

public class Main { 

    public static void main(String[] args) { 
     JDialog dialog = new JDialog(); 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 

     JLabel label = new JLabel("My Label"); 
     label.setAlignmentX(Component.LEFT_ALIGNMENT); 
     panel.add(label); 

     JScrollPane pane = new JScrollPane(new JTextArea(3, 15)); 
     pane.setAlignmentX(Component.LEFT_ALIGNMENT); 
     panel.add(pane); 

     dialog.add(panel); 
     dialog.pack(); 
     dialog.setVisible(true); 
    } 
} 
1

替換:

panel.add(new JLabel("My Label")); 

通過:

JPanel labelPan = new JPanel(new FlowLayout(FlowLayout.LEFT); 
labelPan.add(new JLabel("My Label")); 
panel.add(labelPan);