java 滚动条为什么显示在最下,Java swing 如何让垂直滚动条始终在最下面
大家好,如果您还对java 滚动条为什么显示在最下不太了解,没有关系,今天就由本站为大家分享java 滚动条为什么显示在最下的知识,包括Java swing 如何让垂直滚动条始终在最下面的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
JAVA JTestArea 滚动条不显示
你应该给scrollPaneOut设置在JFrame中的位置,而不应该给txtOut设置在JFrame中的位置.
把txtOut.setPreferredSize(new Dimension(x*19+30,y*3-25));改成scrollPaneOut.setPreferredSize(new Dimension(x*19+30,y*3-25));并且移到scrollPaneOut=new JScrollPane(txtOut);下面,就行了.
完整的程序如下:(改动的地方见注释)
packagewindow;
importjavax.swing.*;
importjava.awt.*;
publicclassWindowMain
{
privateToolkittoolkit;
privateDimensionscreenSize;
privateJFramewindowMain;
privateJPanelMainjpanelMain;
privateJPaneljpanel1,jpanel2,jpanel3,jpanel4;
privateJSplitPanesplit1,split2,split3;
privateintx,y;
privateJTextAreatxtOut;
privateJScrollPanescrollPaneOut;
privatevoiddraw()
{
//设置窗体样式
windowMain=newJFrame("DoublePlayer");
toolkit=windowMain.getToolkit();
screenSize=toolkit.getScreenSize();
x=screenSize.width/20;//把尺寸分为20份后便于整体布局的分配
y=screenSize.height/20;
windowMain.setBounds(0,0,x*20,y*19);
windowMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加背景图
jpanelMain=newJPanelMain();
windowMain.add(jpanelMain);
//整体panel布局
jpanel1=newJPanel();
jpanel2=newJPanel();
split1=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,jpanel1,jpanel2);
jpanel3=newJPanel();
split2=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,split1,jpanel3);
jpanel4=newJPanel();
split3=newJSplitPane(JSplitPane.VERTICAL_SPLIT,split2,jpanel4);
split1.setPreferredSize(newDimension(x*18,y*15));
jpanel1.setPreferredSize(newDimension(x*2,y*15));
split3.setPreferredSize(newDimension(x*20,y*19));
split2.setPreferredSize(newDimension(x*20,y*15));
jpanelMain.add(split3);
//设置背景透明
jpanel1.setOpaque(false);
jpanel2.setOpaque(false);
jpanel3.setOpaque(false);
jpanel4.setOpaque(false);
split1.setOpaque(false);
split1.setDividerSize(5);
split2.setOpaque(false);
split2.setDividerSize(5);
split3.setOpaque(false);
split3.setDividerSize(5);
//添加组件
txtOut=newJTextArea();
txtOut.setLineWrap(true);
//txtOut.setPreferredSize(newDimension(x*19+30,y*3-25));//去掉这一句
scrollPaneOut=newJScrollPane(txtOut);
scrollPaneOut.setPreferredSize(newDimension(x*19+30,y*3-25));//这里加一句
jpanel4.add(scrollPaneOut,BorderLayout.WEST);
windowMain.setVisible(true);
}
classJPanelMainextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
try
{
super.paintComponent(g);
g.drawImage(newImageIcon("image\\windowMain.jpg").getImage(),0,0,null);
}
catch(Exceptione)
{
}
}
}
publicstaticvoidmain(Stringargs[])
{
newWindowMain().draw();
}
}
java滚动条位置
滚动条(JScrollBar)也称为滑块,用来表示一个相对值,该值代表指定范围内的一个整数。例如,用Word编辑文档时,编辑窗右边的滑块对应当前编辑位置在整个文档中的相对位置,可以通过移动选择新的编辑位置。在Swing中,用JScrollBar类实现和管理可调界面。JScrollBar类常用的构造方法是:
JScrollBar(int dir,int init,int width,int low,int high)
其中,dir表示滚动条的方向。JScrollBar类定义了两个常量,JScrollBar.VERTICAL表示垂直滚动条;JScrollBar.HORIZONTAL表示水平滚动条。init表示滚动条的初始值,该值确定滚动条滑块开始时的位置;width是滚动条滑块的宽度;最后两个参数指定滚动的下界和上界。注意滑块的宽度可能影响滚动条可得到的实际的最大值。例如,滚动条的范围是0至255,滑块的宽度是10,并利用滑块的左端或顶端来确定它的实际位置。那么滚动条可以达到的最大值是指定最大值减去滑块的宽度。所以滚动条的值不会超过245。
JScrollBar类其他常用方法是:
setUnitIncrement():设置增量,即单位像素的增值;
getUnitIncrement():获取增量;
setBlockIncrement():设置滑块增量,即滑块的幅度;
getBlockIncrement():获取滑块增量;
setMaxinum():设置最大值;
getMaxinum():获取最大值;
setMininum():设置最小值;
getMininum():获取最小值;
setValue():设置新值;
getValue():获取当前值。
JScrollBar类对象的事件类型是AdjustmentEvent;类要实现的接口是AdjustmentListener,接口方法是adjustmentValueChanged();注册监视器的方法是addAdjustmentListener();获取事件源对象的方法是getAdjustable().
Java swing 如何让垂直滚动条始终在最下面
如果JScrollPane内是JTextArea,滚动条与光标位置同步,可编辑的JTextArea无需处理;
如果JScrollPane内是JPanel等无光标组件,可用以下代码:
JScrollPane jspane;
...
jspane.setVisible(false);//注意JScrollPane内面板添加组件后需JScrollPane设置setVisible值才显示改变后样子
new Thread(){
public void run(){
try{
TimeUnit.MILLISECONDS.sleep(100);
} catch(InterruptedException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
//注意不能直接执行下两步,获取滚动棒获取的是上一次的,直接设置的滚动条也是按上一次,会导致总是显示倒数第二行!需等待一段时间才能获取这次滚动棒长度
JScrollBar jscrollBar= jspane.getVerticalScrollBar();
if(jscrollBar!= null)
jscrollBar.setValue(jscrollBar.getMaximum());//设置滚动条显示位置为滚动棒最大位置处
}
}.start();
jspane.setVisible();
Java如何产生有滚动条的TextArea(代码)
补充回答:你向TextArea内追加内容可以使用append方法,滚动条自动下滚;如果你使用的是 setText方法,那么需要手工把光标定位到内容的最后,同样可以是滚动条下滚。代码如下:
import java.awt.Frame;
import java.awt.TextArea;
public class TestFrame{
public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
jta.setText("test\n");
for(int i=0;i<100;i++){
jta.setText(jta.getText()+"hello"+i+"\n");
jta.setCaretPosition(jta.getText().length());
}
// jta.append("hello"+i+"\n");//这样方式只需要一行代码
}
}
1)如果是JTextArea,需要把JTextArea包含到JScrollPane滚动面板中
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class TestFrame{
public static void main(String[] args){
JFrame jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea jta=new JTextArea();
JScrollPane jp=new JScrollPane(jta);
jf.getContentPane().add(jp);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
2)如果是TextArea,使用缺省方式就可以
import java.awt.Frame;
import java.awt.TextArea;
public class TestFrame{
public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
文章到此结束,如果本次分享的java 滚动条为什么显示在最下和Java swing 如何让垂直滚动条始终在最下面的问题解决了您的问题,那么我们由衷的感到高兴!