看到标题。我试图将组件方向更改为RIGHT_TO_LEFT
,但这有一个意想不到的副作用 - 它具有指定首选大小的组件的行为奇怪。Swing JScrollPane - 如何将垂直滚动条设置到左侧?
(JDK 1.6.0_23,Eclipse的VE)
编辑
下面是这个例子:
我们JFrame
与jMainScrollPane
就可以了。在jMainScrollPane
里面我们放置了一个jMainPanel
。现在将jMainPanel
的首选尺寸设置为比jMainScrollPane
更窄。 jMainPanel
仍将占用jMainScrollPane
上的所有空间。现在将jMainScrollPane
的方向改为RIGHT_TO_LEFT
,看看会发生什么。
示例代码(改变jMainScrollPane
的方向看到的差异):
import java.awt.BorderLayout;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestFrame extends JFrame {
private JPanel jContentPane = null;
private JScrollPane jMainScrollPane = null;
private JPanel jMainPanel = null;
public TestFrame(){
super();
initialize();
}
private void initialize(){
this.setSize(480, 339);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
private JPanel getJContentPane(){
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJMainScrollPane(), BorderLayout.CENTER);
}
return jContentPane;
}
private JScrollPane getJMainScrollPane(){
if (jMainScrollPane == null) {
jMainScrollPane = new JScrollPane();
jMainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jMainScrollPane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
jMainScrollPane.setViewportView(getJMainPanel());
}
return jMainScrollPane;
}
private JPanel getJMainPanel(){
if (jMainPanel == null) {
jMainPanel = new JPanel();
jMainPanel.setLayout(new BorderLayout());
jMainPanel.setPreferredSize(new Dimension(30, 30));
}
return jMainPanel;
}
}
EDIT2
由于这个奇怪的性质,我已经提交一个bug到Oracle。他们给我寄了一个错误链接
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7038455
目前有没有这样的错误,但 - 我想,它被选中。
但问题仍然存在 - 有没有解决方法或其他方法?
重复[JScrollPane左滚动条](http://stackoverflow.com/questions/1311689/jscrollpane-with-scroll-bar-to-left) – Manoj 2011-04-20 08:06:45
@Manoj似乎像@Frozen_Spider已经尝试了答案提到的问题,但结果不满意。 – Riduidel 2011-04-20 08:10:17
@Frozen_Spider当你写下“布局糟糕的布局”时,你能告诉我们你的意思吗?或发送截图? – Riduidel 2011-04-20 08:10:52