【发布时间】:2015-05-31 23:48:36
【问题描述】:
我有下面的示例 Java Swing 代码,它生成以下屏幕截图(屏幕截图已被编辑以使其更小):
代码如下:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class Main extends JFrame {
public Main() {
JListTest theGui = new JListTest();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
add(theGui);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
private class JListTest extends JPanel {
private static final int PADDING = 3;
private JLabel label;
private JTextArea textarea;
private String listOptions[] =
{"here is some veeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrry long text",
"here is some more loooooooooooooooooooooooooooooooooooooooooooooooooooooong text",
"here is some veeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrry long text",
"here is some more loooooooooooooooooooooooooooooooooooooooooooooooooooooong text",
"here is some veeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrry long text",
"here is some more loooooooooooooooooooooooooooooooooooooooooooooooooooooong text",
"here is some veeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrry long text",
"here is some more loooooooooooooooooooooooooooooooooooooooooooooooooooooong text",
"here is some veeeeeeeeeeeeeeeeeeeeeeeeeerrrrrrrrrrrrrrrrrrrrrrrrrrrrry long text",
"here is some more loooooooooooooooooooooooooooooooooooooooooooooooooooooong text"};
private JList<String> list;
private JScrollPane scrollpane;
private GridBagConstraints gbc;
public JListTest() {
super(new GridBagLayout());
label = new JLabel("Here is a label:");
textarea = new JTextArea(20, 50);
list = new JList<String>(listOptions);
scrollpane = new JScrollPane(list);
gbc = new GridBagConstraints();
gbc.gridheight = 1;
gbc.insets = new Insets(PADDING, PADDING, PADDING, PADDING);
gbc.anchor = GridBagConstraints.LINE_START;
gbc.gridwidth = 4;
gbc.gridx = 0;
gbc.gridy = 0;
add(label, gbc);
// I want the scrollpane to take up 1/4 the width of the window.
gbc.gridwidth = 1;
gbc.gridx = 0;
gbc.gridy = 1;
add(scrollpane, gbc);
// I want the textarea to take up 3/4 the width of the window.
gbc.gridwidth = 3;
gbc.gridx = 1;
gbc.gridy = 1;
add(textarea, gbc);
}
}
}
如您所见,我在左侧的 JScrollPane 和右侧的 JTextArea 中有一个 JList,其中包含带有很长文本的项目。我希望 JScrollPane/JList 占据窗口宽度的 1/4,并在 JList 项的文本过长时出现水平滚动条。我希望 JTextArea 占据窗口宽度的 3/4。
我尝试使用 GridBagLayout 来执行此操作,但显然我做得不对,因为外观已关闭。
感谢任何帮助。谢谢!
【问题讨论】:
标签: java swing layout-manager gridbaglayout