我想知道是否可以在没有JFrame的情况下使用JPanel,因为我正在编写一个要求编写失败报告的程序。我正在使用JOptionpane进行新窗口,但每次我尝试向textArea添加一个滚动条时,它就会从屏幕上消失,但如果我在JFrames中这样做,它就不会。我需要使用JPanels,因为我在一个框架中有2个Jpanel,并且每个人都必须分别有一个滚动条,请帮助感谢.......
public class aa {
private static JScrollPane pane;
public static void main(String[] arg){
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(425, 400));
panel.setLayout(null);
JLabel labelName= new JLabel("Name and Surname");
JTextField textFieldName = new JTextField();
JLabel labelFailSubject= new JLabel("Fail Subject");
JTextField textFieldFailSubject = new JTextField(15);
JLabel labelTime= new JLabel("Fail Time");
JTextField textFieldFailTime = new JTextField(8);
JLabel labelFailDate = new JLabel("Fail Date");
JTextField textFieldFailDate= new JTextField(8);
JLabel labelFailReport= new JLabel("Fail Report");
JTextArea textBoxFailReport = new JTextArea();
pane = new JScrollPane(textBoxFailReport);
panel.add(labelName);
panel.add(textFieldName);
panel.add(labelFailDate);
panel.add(textFieldFailDate);
panel.add(labelTime);
panel.add(textFieldFailTime);
panel.add(labelFailSubject);
panel.add(textFieldFailSubject);
panel.add(labelFailReport);
panel.add(textBoxFailReport);
textBoxFailReport.setLineWrap(true);
JOptionPane.showMessageDialog(null, panel, "Fail Report", JOptionPane.PLAIN_MESSAGE);
}
}
答案 0 :(得分:1)
您创建了一个包含文本区域的JScrollPane,但您不是将此scrollPane添加到主面板,而是直接添加textarea。这样就可以从其滚动窗格父项中删除textarea并将其添加到主面板中。因此根本不使用滚动窗格。
使用空布局也不是你应该做的事情。
答案 1 :(得分:0)
将JPanel
换成JScrollPane
,然后将其添加到JOptionPane
。这应该可以解决问题。
更新
以下是示例代码。我在这里使用了GridLayout
。
private static JScrollPane pane;
public static void main(String[] arg) {
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(425, 400));
panel.setLayout(new GridLayout(5, 2));//Grid Layout with 5 rows, 2 columns used
JLabel labelName = new JLabel("Name and Surname");
JTextField textFieldName = new JTextField();
JLabel labelFailSubject = new JLabel("Fail Subject");
JTextField textFieldFailSubject = new JTextField(15);
JLabel labelTime = new JLabel("Fail Time");
JTextField textFieldFailTime = new JTextField(8);
JLabel labelFailDate = new JLabel("Fail Date");
JTextField textFieldFailDate = new JTextField(8);
JLabel labelFailReport = new JLabel("Fail Report");
JTextArea textBoxFailReport = new JTextArea();
panel.add(labelName);
panel.add(textFieldName);
panel.add(labelFailDate);
panel.add(textFieldFailDate);
panel.add(labelTime);
panel.add(textFieldFailTime);
panel.add(labelFailSubject);
panel.add(textFieldFailSubject);
panel.add(labelFailReport);
panel.add(textBoxFailReport);
textBoxFailReport.setLineWrap(true);
pane = new JScrollPane(panel);//JPanel is wrapped with JScrollPane
JOptionPane.showMessageDialog(null, pane, "Fail Report", JOptionPane.PLAIN_MESSAGE);//JScrollPane is added to the JOptionPane
}