当前位置: 技术问答>java相关
较简单,但搞不定的一个问题:关于滚动条。几行代码,烦请相助!
来源: 互联网 发布时间:2015-05-14
本文导语: 我在testPanel类(继承JPanel)种画一直线,然后在test类(主类)中add这个testPanel(JPanel类),并且为这个testPanel加上滚动条,但是我就是看不到滚动条 。我画的图肯定超出定义Frame的大小,所以这点可以排出。 import ja...
我在testPanel类(继承JPanel)种画一直线,然后在test类(主类)中add这个testPanel(JPanel类),并且为这个testPanel加上滚动条,但是我就是看不到滚动条
。我画的图肯定超出定义Frame的大小,所以这点可以排出。
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.*;
import java.lang.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class testPanel extends JPanel
{
public testPanel()
{
this.setBackground(Color.gray);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.blue);
g2d.drawRect(50,50,200,200);
}
}
主类:
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.*;
import java.lang.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.*;
class test extends JFrame
{
testPanel p = new testPanel();
JPanel contentPane;
public test()
{
super("Test");
setBounds(50,50,100,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = (JPanel) this.getContentPane();
p.setSize(100,100);
//此处加入滚动条
contentPane.add(new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args)
{
test t = new test();
}
}
。我画的图肯定超出定义Frame的大小,所以这点可以排出。
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.*;
import java.lang.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class testPanel extends JPanel
{
public testPanel()
{
this.setBackground(Color.gray);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.blue);
g2d.drawRect(50,50,200,200);
}
}
主类:
import java.awt.*;
import java.awt.geom.Line2D;
import java.io.*;
import java.lang.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.*;
class test extends JFrame
{
testPanel p = new testPanel();
JPanel contentPane;
public test()
{
super("Test");
setBounds(50,50,100,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = (JPanel) this.getContentPane();
p.setSize(100,100);
//此处加入滚动条
contentPane.add(new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args)
{
test t = new test();
}
}
|
滚动条是根据内部所放组件的PreferredSize来确定是否有滚动,由于你已设置p.setSize(100,100),你画的矩形只画了一个角,size就那么大,如何滚动。
解决:
//p.setSize(100,100);
p.setPreferredSize(new Dimension(1000,1000));
解决:
//p.setSize(100,100);
p.setPreferredSize(new Dimension(1000,1000));
|
你在第一个函数还要设置:
setResizable(false);
否则就会看不到的。
setResizable(false);
否则就会看不到的。
|
你的contentPane都没显示呀
当然你看不到了
当然你看不到了