我想在 JTextArea 上显示 JList,但它在 JTextArea 后面显示它。我附上了两张图片来通过图片来描述我的问题。在运行时我们如何在 JTextArea 上设置 JList?
问问题
1575 次
2 回答
4
bsm:在这种情况下,您不应该使用 JLists,而是使用 JComboBoxes,它会在 JTextArea 上正确显示下拉列表。例如,
import java.awt.BorderLayout;
import javax.swing.*;
public class JComboAndJTextArea extends JPanel {
private static final String[] ITEMS1 = {"one", "two", "three", "four", "five"};
private static final String[] ITEMS2 = {"Monday", "Tuesday",
"Wednesday", "Thursday", "Friday"};
public JComboAndJTextArea() {
JPanel northPanel = new JPanel();
northPanel.add(new JCheckBox("Reminder"));
northPanel.add(new JComboBox(ITEMS1));
northPanel.add(new JComboBox(ITEMS2));
setLayout(new BorderLayout());
add(northPanel, BorderLayout.NORTH);
add(new JScrollPane(new JTextArea(8, 30)), BorderLayout.CENTER);
}
private static void createAndShowUI() {
JFrame frame = new JFrame("JComboAndJTextArea");
frame.getContentPane().add(new JComboAndJTextArea());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
我还再次建议您暂时将 NetBeans 代码生成放在一边,因为我真诚地相信,对于许多人来说,这会阻碍他们学习如何在 Swing 中编写代码的能力。
于 2011-04-09T19:50:03.590 回答
2
我认为默认行为是在其他组件上显示组合内容,因此您可以采用这种方式。目前我想到的唯一建议是使用分层窗格。
您可以检查将带有选项的组合框部分添加到哪一层。然后将列表添加到上面的列表中。
关于 LayeredPane 的教程http://download.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
根据对 RootPane 的描述,我认为组合框的选项必须显示在弹出层http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html
祝你好运,博罗。
于 2011-04-09T19:38:21.877 回答