如何给一个panel添加滚动条? 想在一个panel里动态的添加textarea,button..添加多了在panel中显示不到的时候自动的添加上滚动条? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JScrollPane j = new JScrollPane(new JTextArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);this.add(j, null); 我试用了JScrollpane但是在放上去的东西不好定位的。在说我加进去的东西是动态的用,不好调整的。加jscrollpane,如果控制不在水平的添加呢 我用了jscrollpane。我是想动态的一行行的添加。每行有TextField Button。不要水平的scrollbar。在里面怎么布局啊 package test;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class ccc { public static void main(String[] args) { JFrame frm = new JFrame(); frm.getContentPane().setLayout(new BorderLayout()); JPanel p = new JPanel(); p.setLayout(new GridLayout(100, 0)); JButton btn[] = new JButton[100]; for (int k = 0; k < 10; k++) { btn[k] = new JButton(Integer.toString(k)); p.add(btn[k]); } JScrollPane sp = new JScrollPane(p); frm.getContentPane().add(sp, BorderLayout.CENTER); frm.setSize(400, 400); frm.show(); }} 你这样做我也考虑过 但是我是在frame上button点击 就在jpanel里添加一行。所以在里面的gridlayout的行数是动态的。这样动态的添加。有什么好方法实现吗? package test;import java.awt.BorderLayout;import java.awt.Button;import java.awt.GridLayout;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JScrollPane;public class ccccc extends JFrame { Button btn1; private JPanel jContentPane = null; JPanel p; public static int count = 1; JScrollPane sp; /** * This is the default constructor */ public ccccc() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(300, 200); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); this.setVisible(true); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); btn1 = new Button("add"); btn1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { add(); } }); jContentPane.add(btn1, BorderLayout.NORTH); p = new JPanel(); p.setLayout(new GridLayout(count, 0)); JPanel btn = new JPanel(); int k=1; //btn[k] = new JPanel(); btn.setBackground(new java.awt.Color(20*k,20*k,20*k)); //btn[k].setSize(100,1000); btn.add(new JLabel(new Integer(k).toString())); p.add(btn); sp = new JScrollPane(p); jContentPane.add(sp, BorderLayout.CENTER); } return jContentPane; } private void add() { JPanel btn = new JPanel(); count++; p.setLayout(new GridLayout(count, 0)); btn = new JPanel(); if(20*count>255) btn.setBackground(new java.awt.Color(200,200,200)); else btn.setBackground(new java.awt.Color(20*count,20*count,20*count)); //btn[k].setSize(100,1000); btn.add(new JLabel(new Integer(count).toString())); p.add(btn); // System.out.println(p.getComponentCount()); // sp.repaint(); this.repaint(); } public static void main(String[] d) { new ccccc(); }}这个现在还有点问题,不过可以实现你的功能。有个思路吧 上面的CODE的问题好象不是很好解决的样子,你有办法吗?你需要放大或是缩小一下才调用了paint(),我写了半天也没搞定 基本知道了。谢谢。请问哈java里有象dp中的 listview吗?如有是什么,怎么使用;如果没怎么实现? 为何要用repaint呢 ?为何不用validate() 我没做过DP,不知道listview是什么:) listview是不是有点想把好多panel加到一起的感觉? 那java里有没有什么控件象list 但是添加进每一行的都是一个checkbox和textfield 你可以自己定义一个你要的控件类的。java里有list,不过好象只能写文本。 我查了一下,jList可以上面可以加图片,但还是不知道可不可以加你说的东西,而且还不是很简单,我觉得最好的办法就是自己写一个自己想要组合的控件,这样最好了 ProcessBuilder问题~ 用java实现ftp下载报错 做一个释放内存的软件 问个函数 StrTo... 构造函数外的成员变量 JTextField的问题 !!!FileInputStream如何用jar文件里的jpg图像?!!!!!!!!!!!1 关于控制台输入小问题,请求解答》 急,简单,在线等。关于文件下载的链接 java正则表达式问题 Collection的原代码看不到? scjp的一个题目,关于线程同步的,求具体解
this.add(j, null);
用,不好调整的。加jscrollpane,如果控制不在水平的添加呢
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;public class ccc { public static void main(String[] args) { JFrame frm = new JFrame();
frm.getContentPane().setLayout(new BorderLayout()); JPanel p = new JPanel();
p.setLayout(new GridLayout(100, 0));
JButton btn[] = new JButton[100];
for (int k = 0; k < 10; k++) {
btn[k] = new JButton(Integer.toString(k));
p.add(btn[k]); }
JScrollPane sp = new JScrollPane(p);
frm.getContentPane().add(sp, BorderLayout.CENTER);
frm.setSize(400, 400);
frm.show();
}}
所以在里面的gridlayout的行数是动态的。这样动态的添加。有什么好方法实现吗?
import java.awt.Button;
import java.awt.GridLayout;import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;public class ccccc extends JFrame { Button btn1;
private JPanel jContentPane = null;
JPanel p;
public static int count = 1;
JScrollPane sp; /**
* This is the default constructor
*/
public ccccc() {
super();
initialize();
} /**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
this.setVisible(true);
} /**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
btn1 = new Button("add");
btn1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
add();
}
});
jContentPane.add(btn1, BorderLayout.NORTH);
p = new JPanel();
p.setLayout(new GridLayout(count, 0));
JPanel btn = new JPanel();
int k=1;
//btn[k] = new JPanel();
btn.setBackground(new java.awt.Color(20*k,20*k,20*k));
//btn[k].setSize(100,1000);
btn.add(new JLabel(new Integer(k).toString()));
p.add(btn);
sp = new JScrollPane(p);
jContentPane.add(sp, BorderLayout.CENTER); }
return jContentPane;
}
private void add()
{
JPanel btn = new JPanel();
count++;
p.setLayout(new GridLayout(count, 0));
btn = new JPanel();
if(20*count>255)
btn.setBackground(new java.awt.Color(200,200,200));
else
btn.setBackground(new java.awt.Color(20*count,20*count,20*count));
//btn[k].setSize(100,1000);
btn.add(new JLabel(new Integer(count).toString()));
p.add(btn);
// System.out.println(p.getComponentCount());
// sp.repaint();
this.repaint();
} public static void main(String[] d)
{
new ccccc();
}
}
这个现在还有点问题,不过可以实现你的功能。有个思路吧
请问哈java里有象dp中的 listview吗?如有是什么,怎么使用;如果没怎么实现?
java里有list,不过好象只能写文本。