我試圖將多個JLists放入JPanel和JScrollPane中的JPanel。問題是,當我將JScrollPane添加到公式中時,JList和外部邊界之間存在一個空格,我該如何擺脫這個邊界,以便水平填充?刪除JScrollPane中的邊框
這是一個小的示例代碼,用JLabel而不是JList來演示此問題。
/編輯:它似乎是Windows的東西,它在Mac OS上運行良好。
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame
{
public static void main(String[] args)
{
Test test = new Test();
}
public Test()
{
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(contentPane);
this.setMinimumSize(new Dimension(400, 300));
JScrollPane sp = new JScrollPane(createLeftPane());
sp.setBorder(BorderFactory.createLineBorder(Color.yellow));
this.add(sp, BorderLayout.WEST);
LookAndFeel.installBorder(sp, "BorderFactory.createEmptyBorder()");
StackTraceElement[] st = Thread.currentThread().getStackTrace();
for(int i = 0; i < st.length; i++) {
System.out.println(st[i]);
}
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private JPanel createLeftPane()
{
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
JLabel label = new JLabel("TEST LABEL");
label.setBorder(BorderFactory.createLineBorder(Color.blue));
panel.add(label, c);
panel.setBorder(BorderFactory.createLineBorder(Color.red));
return panel;
}
}
下面是截圖(第一個是沒有滾動面板)
堆棧跟蹤:
java.lang.Thread.getStackTrace(Thread.java:1479)
test.Test.<init>(Test.java:27)
test.Test.main(Test.java:10)
/編輯:一些試驗和錯誤之後,我發現,當我添加一個c.weightx = 0.5到它橫向填充的約束,但是當scrollPane變得比它的內容大時,它會變寬,這很奇怪。看下面的截圖:
的
JScrollPane
的邊界任何邊界+1發佈SSCCE。你可以添加一個截圖嗎? –@ Eng.Fouad截圖添加了 – Jesse