(使用netbeans)
因此,对于我的项目,我需要添加JscrollPane
,以便用户可以看到所有JTextArea
输出,一个饼图和我添加的两个按钮。这是我实现JscrollPane
的代码。但是它导致程序不再生成输出屏幕。我的问题是我需要将JscrollPane
添加到JPanel或JFrame中,如果是这样,我做错了什么(尝试包含尽可能多的相关代码)
P.S我应该从Borderlayout
更改为Boxlayout
吗?这会在添加jscroll方面产生影响吗?
JFrame frame1 = new JFrame("Portfolio Results");
frame1.setSize(800,800);
// frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// output screen declartions
frame1.setLayout(new BorderLayout());
JPanel panel1 = new JPanel();
frame1.add(panel1,BorderLayout.PAGE_START);
panel1.setLayout(new BorderLayout());
JTextArea area1 = new JTextArea();
area1.setPreferredSize(new Dimension(600,600));
panel1.add(area1,BorderLayout.PAGE_START);
JScrollPane scp1 = new JScrollPane(frame1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
frame1.add(scp1);
//code for Pie chart and two button
DefaultPieDataset piedata = new DefaultPieDataset();
piedata.setValue("test", new Integer (100));
JFreeChart chart = ChartFactory.createPieChart("test", piedata, true, true, true);
PiePlot p = (PiePlot)chart.getPlot();
ChartPanel testpan = new ChartPanel(chart);
panel1.add(testpan,BorderLayout.CENTER);
JButton button= new JButton("SAVE");
// button.setPreferredSize(new Dimension(80,20));
// Listener listener = new Listener();
// button.addActionListener(this);
panel1.add(button,BorderLayout.PAGE_END);
JButton pbutton=new JButton("Print");
panel1.add(pbutton,BorderLayout.SOUTH);
答案 0 :(得分:2)
您应该使用要滚动的对象初始化JScrollPane
。
在您的示例中,似乎JTextArea
是您想要的对象,因此:
JScrollPane scp1 = new JScrollPane(area1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
来自Oracle
docs:
JScrollPane(Component view)
创建一个显示指定组件的内容的JScrollPane ,其中包含水平和 只要组件的内容是,就会出现垂直滚动条 大于视图。
另请参阅此Oracle
example。