2 zxd 8 zxd_8 于 2017.01.10 10:22 提问

把JPanel添加到JScrollPane

package com.frame;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Component;
import java.awt.Container;
import java.awt.Frame;
//import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

@SuppressWarnings("serial")
public class testjm1 extends JFrame implements ActionListener{
JButton btnquit,btnsubmit;
JLabel labtitle,lab1[][],lab2[][],lab3[][];
JTextField text1[][],text2[][];
JTextArea txtarea;
JScrollPane Jspane;
int i,j,k;
JPanel pp[][],ppp;
double cbmatrix1[][];//成本转换邻接矩阵1
double cbmatrix2[][];//成本转换邻接矩阵2
int num;
public double[][] getCbmatrix1() {
return cbmatrix1;
}

public void setCbmatrix1(double[][] cbmatrix1) {
    this.cbmatrix1 = cbmatrix1;
}

public double[][] getCbmatrix2() {
    return cbmatrix2;
}

public void setCbmatrix2(double[][] cbmatrix2) {
    this.cbmatrix2 = cbmatrix2;
}
public void init(){
    Jspane = new JScrollPane();
    //分别设置水平和垂直滚动条总是出现
    Jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    Jspane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    //分别设置水平和垂直滚动条自动出现
    // Jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // Jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    }
public testjm1(){
    super("图中各节点的成本邻接矩阵信息采集");
    setVisible(true);
    this.setFont(new   java.awt.Font("Dialog",1,15));       
    num=8;
    ppp=new JPanel();       
    pp=new JPanel[num+1][num+1];
    lab1=new JLabel[num+1][num+1];
    lab2=new JLabel[num+1][num+1];
    lab3=new JLabel[num+1][num+1];
    text1=new JTextField[num+1][num+1];
    text2=new JTextField[num+1][num+1];
    cbmatrix1=new double[num+1][num+1];
    cbmatrix2=new double[num+1][num+1];
    btnquit=new JButton("退出");
    btnsubmit=new JButton("提交");
    labtitle=new JLabel("请输入图中各节点之间的权重区间:");
    txtarea=new JTextArea();
    setLayout(null);
    //setSize(300 + num * 200, 300 + num * 200);
    setSize(800,700);
    //ppp.setBounds(0, 0,300 + num * 200,300 + num * 200);
    ppp.setBounds(0,0,650,650);
    ppp.setLayout(null);
    this.add(ppp);
    ppp.add(txtarea);
    ppp.add(labtitle);
    ppp.add(btnquit);
    ppp.add(btnsubmit);
    labtitle.setBounds(30, 50, 280, 30);
    btnsubmit.setBounds(320, 50, 80, 30);
    JScrollPane ScrollPane = new JScrollPane(ppp);      
    ScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    ScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

     //ScrollPane.setBounds(0, 0,300 + num * 200,300 + num * 200);
    ScrollPane.setBounds(0,0,650,650);
     this.getContentPane().add(ScrollPane);

     this.setVisible(true);
    btnsubmit.addActionListener(this);
    for (i = 0; i <= num; i++) {
        Component heng = add(new Label("节点" + i));
            ppp.add(heng);
          heng.setBounds(150 + i * 180, 100 , 50, 30);
        Component shu = add(new Label("节点" + i));
        ppp.add(shu);
        shu.setBounds(30, 145 + i * 50, 50, 30);// 120>130
    }
    for (i = 0; i <= num; i++) {
        for (j = 0; j <= num; j++) {
            k=0;
            lab1[i][j]=new JLabel("[");
            lab1[i][j].setSize(5, 25);
            lab2[i][j]=new JLabel(",");
            lab2[i][j].setSize(5, 25);
            lab3[i][j]=new JLabel("]");
            lab3[i][j].setSize(5, 25);
            if (i == j) {   
                text1[i][j]=new JTextField("0",2);                  
                text2[i][j]=new JTextField("0",2);
                pp[i][j]=new JPanel();
                ppp.add(pp[i][j]);
                pp[i][j].add(lab1[i][j]);
                pp[i][j].add(text1[i][j]);
                pp[i][j].add(lab2[i][j]);
                pp[i][j].add(text2[i][j]);
                pp[i][j].add(lab3[i][j]);

                pp[i][j].setBounds(100 + j * 180, 140 + i * 50, 170, 25);
            } else {
                text1[i][j]=new JTextField(2);
                text2[i][j]=new JTextField(2);              
                pp[i][j]=new JPanel();
                ppp.add(pp[i][j]);
                pp[i][j].add(lab1[i][j]);
                pp[i][j].add(text1[i][j]);
                pp[i][j].add(lab2[i][j]);
                pp[i][j].add(text2[i][j]);
                pp[i][j].add(lab3[i][j]);
                pp[i][j].setBounds(100 + j * 180, 140 + i * 50, 170, 25);               
            }

        }
    }

}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource()==btnsubmit){
        //System.out.println("########");
    for(int i=0;i<=num;i++)
        for(int j=0;j<=num;j++){

// if(text1[i][j].getText()!=null||text1[i][j].getText()!=""){
// cbmatrix1[i][j]=Integer.parseInt(text1[i][j].getText());
// }
if(text1[i][j].getText().trim().equals("")){
cbmatrix1[i][j]=0;
}
else
cbmatrix1[i][j]=Double.parseDouble(text1[i][j].getText());
if(text2[i][j].getText().trim().equals("")){
cbmatrix2[i][j]=0;
}
else
cbmatrix2[i][j]=Double.parseDouble(text2[i][j].getText());
}
this.dispose();
}
}
public static void main(String[] args) {
testjm1 t=new testjm1();
}
}
把JPanel添加到JScrollPane里面,运行之后JScrollPane没办法显示JPanel中所有组件

1个回答

dabocaiqq
dabocaiqq   2017.01.21 23:08
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在JPanel面板中添加JScrollPane滚动条
方法一: import java.awt.*; import javax.swing.*; import java.awt.Dimension; public class JScrollPaneTest extends JFrame{ public JScrollPaneTest() { this.setLayout(null); JPanel jp=new JPane
java中向Jscrollpane中加入Jpanel
#####最近有个问题一直困扰这我,就是如何向向Jscrollpane中加入Jpanel         试了好多方法,感觉自己写的没错,         而现在终于找到问题出在哪儿了         就是一个,jscrollpane中不能用add来添加,只能是:         在new 的时候添加进去。         如:                 Jscrollpane
JScrollPane+JTree的使用+container 是JPanel
参考:点击打开链接 http://bbs.csdn.net/topics/370256772 2015-02-01 今天改代码,将Tree加入ScrollPane中,然后将scrollPane加入一个JPanel中,就是找不到方法使scrollPane随panel的大小改变,最后就一句代码就搞定了,真是水啊,还是对Java Swing 的机制不清楚啊。 private void cr
JavaSE项目中怎样让JPanel和JScrollPane结合出现自动滚动条,并运用到自己的项目中出现不能正常显示出滚动条的原因
方式一 :   import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; public class InvokeTest extends JFrame  {  public InvokeTest() {    su
将JTable加入到JScrollPane后,无法向JScrollPane中添加其他的组件的解决方案
我们知道,如果不将JTable添加到JScrollPane中,则表头不会显示出来。但是加进去后,如果想再向JScrollPane中添加其他的组件,是添加不进去的。如果用JScrollPane.getViewport().add(Component view)的方法,则只会显示你新加进去的组件。如果用JScrollPane.add(Component view);的方法,则新添加进的组件只会在你的鼠
JScrollPane 上 JPanel 里面内容 动态更新
JPanel jpSouth2; 当你的内容循环添加完记得执行下面语句   jpSouth2.updateUI(); jpSouth2.invalidate();  jpSouth2.validate(); jpSouth2.repaint();
Swing中JScrollPane添加JPanel设置setPreferredSize问题
[java] view plain copy panel = new JPanel(new FlowLayout(FlowLayout.LEFT));   [java] view plain copy Dimension ds = new Dimension(100, 100);   panel.setPreferre
java图像界面开发简单实例-JTextArea、JScrollPane、JPanel、JButton应用实例
java图像界面开发简单实例JTextArea、JScrollPane、JPanel、JButton应用实例,通过‘插入文本’按钮功能,写入测试文本,换行功能可以进行换行和不换行,代码如下: import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListene
JScrollPane控件中添加JPanel后滚动条显示问题
今天在做项目的时候使用到了JScrollPane类,往里面放置一个布局格式为GridLayout的JPanel容器,结果JScrollPane容器的上下和左右滚动条死活不出来,于是上网查找了一下解决方案,只要设置了容器的PreferredSize属性,然后在添加到JScrollP
java入门教程-10.4Java面板基础:JPanel和JScrollPane
面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane)。 JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘画,将放有组件和有画的JPanel再放入另一个容器里。JPanel的默认布局为FlowLayout。 面板处理程序的基本内容有以下几个方面: 通过继承声明JPanel类的子类,子类