JAVA设置jscrollbar大小,Java-在JScrollBar设置在右侧的情况下打开JScrollPane

I'm looking to try and load up a JScrollPane with the horizontal JScrollBar set all the way to the right, i.e. like in this image:

However, no matter what I do, I end up with this image:

This is the relevant snippet of my code

JComponent graph = new TrendsForSuccLarge(wccScores, wccScoresTimes, graphStrings, maxScore, bgColour, iPadWidth);

JScrollPane graphScrollPane = new JScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

JScrollBar horizontal = graphScrollPane.getHorizontalScrollBar();

horizontal.setValue( horizontal.getMaximum() );

this.getContentPane().add(graphScrollPane, BorderLayout.CENTER);

Any ideas of what's going wrong?

Thanks in advance!

Kesh

SSCCE

import javax.swing.JFrame;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JComponent;

import javax.swing.JDialog;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

class ForStackOverflow {

private static JFrame main;

//opens up a line chart on full screen

public static void main(String args[]) {

TempGraph tg = new TempGraph(main);

tg.setVisible(true);

}

}

class TempGraph extends JDialog {

private static final long serialVersionUID = 1L;

//opens up a line chart on full screen

public TempGraph(JFrame parent)

{

// load the frame

super(parent,true);

configureFrame();

}

private void configureFrame()

{

int iPadHeight = 644;

int iPadWidth = 981;

this.getContentPane().setLayout(new BorderLayout());

JComponent graph = new TrendsForSuccLarge2(iPadWidth);

JScrollPane graphScrollPane = new JScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

this.getContentPane().add(graphScrollPane, BorderLayout.CENTER);

JPanel buttons = new JPanel();

buttons.setLayout(new BorderLayout());

JButton ok = new JButton("Done");

ok.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

next();

}

});

buttons.add(ok,BorderLayout.CENTER);

JButton exit = new JButton("Exit");

exit.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

buttons.add(exit,BorderLayout.WEST);

this.getContentPane().add(buttons, BorderLayout.SOUTH);

this.pack();

this.setSize(this.getWidth(), 750);

this.setResizable(true);

Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

int widthFrame = iPadWidth;

int heightFrame = iPadHeight;

this.setSize(widthFrame, heightFrame);

setBounds((screenSize.width - this.getWidth()) / 2,

(screenSize.height - this.getHeight()) / 2,

getWidth(),

getHeight());

}

private void next()

{

this.setVisible(false);

}

}

class TrendsForSuccLarge2 extends JComponent {

// basic parameters

private static int PREF_W = 200;

private static final int PREF_H = 200;

private static final int BORDER_GAP = 10;

private static final int GRAPH_GAP = BORDER_GAP + 20;

private int graphWidth = 0;

private static final long serialVersionUID = 1L;

TrendsForSuccLarge2(int prefGraphWidth) {

graphWidth = prefGraphWidth;

paintComponent(null);

}

public void paint(Graphics g) {

int windowWidth = 2600;

PREF_W = windowWidth;

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2.drawString("Hello", graphWidth/2, getHeight() - GRAPH_GAP);

g2.drawString("Hello1", graphWidth - GRAPH_GAP, getHeight() - GRAPH_GAP);

g2.drawString("Hello2", windowWidth - GRAPH_GAP - GRAPH_GAP, getHeight() - GRAPH_GAP);

// create x and y axes

g2.setColor(Color.black);

g2.drawLine(GRAPH_GAP, getHeight() - GRAPH_GAP, GRAPH_GAP, GRAPH_GAP);

g2.drawLine(GRAPH_GAP, getHeight() - GRAPH_GAP, windowWidth - GRAPH_GAP, getHeight() - GRAPH_GAP);

}

public Dimension getPreferredSize() {

return new Dimension(PREF_W, PREF_H);

}

}

解决方案

I solved this, apparently the issue was that my component had a preferred size that was too small. I rammed the preferred size up and everything sorted itself.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值