我正在尝试将JList添加到GUI,但我想知道如何定位它?我希望它出现在TextArea的右侧,以便将数据发送到GUI进行选择。
有人可以建议怎么做吗?这是代码(注意:Java和GUI的新手)
protected static void createAndShowGUI() {
GUI predict = new GUI();
JFrame frame = new JFrame("Phone V1.0");
frame.setContentPane(predict.createContentPane());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setMinimumSize(new Dimension(300, 400));
frame.setVisible(true); // Otherwise invisible window
}
private JPanel createContentPane() {
JPanel pane = new JPanel();
TextArea = new JTextArea(5, 10);
TextArea.setEditable(false);
TextArea.setLineWrap(true);
TextArea.setWrapStyleWord(true);
TextArea.setWrapStyleWord(true);
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
//Adds the buttons from Top to Bottom
String[] items = {"dsfsdfd"};
list = new JList(items);
JScrollPane scrollingList = new JScrollPane(list);
int orient = list.getLayoutOrientation();
JPanel window = new JPanel();
pane.add(window);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(5, 3));
JButton[] buttons = new JButton[] {
new JButton("Yes"),
new JButton(""),
new JButton("Clr"),
new JButton("1"),
new JButton("2abc"),
new JButton("3def"),
new JButton("4ghi"),
new JButton("5jkl"),
new JButton("6mno"),
new JButton("7pqrs"),
new JButton("8tuv"),
new JButton("9wxyz"),
new JButton("*+"),
new JButton("0_"),
new JButton("^#")
}; // Array Initialiser
for (int i = 0; i < buttons.length; i++) {
buttonPanel.add(buttons[i]);
buttons[i].addActionListener(this);
}
pane.add(TextArea);
pane.add(list);
pane.add(buttonPanel);
return pane;
}
答案 0 :(得分:2)
阅读Using Layout Mananger上的Swing教程中的部分。无需仅使用单个布局管理器。您可以嵌套布局管理器以获得所需的效果。
答案 1 :(得分:1)
您可以使用 Mig Layout 等布局管理器进行此类定位。
答案 2 :(得分:1)
将TextArea
和list
与BorderLayout经理一起包含在新面板中。基本上BorderLayout管理器允许您使用北,南,东,西和中心坐标来排列组件。中心的组件占用所有可用空间,因为父容器有更多可用空间。
private JPanel createContentPane() {
JPanel pane = new JPanel(); //this is your main panel
JPanel textAreaPanel = new JPanel(new BorderLayout()); //the wrapper
//Some more code...
//Then at the end
//Make your TextArea take the center
textAreaPanel.add(TextArea, BorderLayout.CENTER);
//And the list to the east
textAreaPanel.add(list, BorderLayout.EAST);
pane.add(textAreaPanel);
pane.add(buttonPanel);
return pane;
}
很酷的是,您可以将面板嵌套在其他面板中,添加不同的布局管理器以获得所需的布局。
在不相关的说明中,请尝试关注Java naming conventions。而不是JTextArea TextArea
使用JTextArea textArea
。它使您和阅读代码的人更容易理解它。
答案 3 :(得分:0)
我可以推荐你FormLayout
。在我找到这个布局之前,我对GridBagLayout
感到非常痛苦。 FormLayout
更强大,学习和使用更方便,而且是免费的。给它一个机会。
答案 4 :(得分:0)
正如其他人所说,熟悉布局管理器的概念。有几个标准的Swing API和几个好的第三方API。
此外,您还需要将JList
添加到滚动窗格(JScrollPane
)。您可能希望考虑将其添加到拆分窗格(JSplitPane
)。并且通过考虑我不是说“这样做是因为网络上的某些人这么说”我的意思是“如果对你的最终用户有意义的话就去做”。