因此,我使用g.drawLine(x,y)绘制了一个从(0,200)到(100000,200)绘制一条线的500x500的JFrame。问题是我看不到整条线,因为没有滚动条。有人能告诉我如何在这种特殊情况下使用滚动条来查看整条线(100000,200)。JFrame在Java Swing中的滚动条
0
A
回答
1
你能告诉我们代码吗?因为它是很难知道没有看到它,但是在我的头顶,我认为你应该建立一个并把它添加到你的JFrame像这样:在添加它之前
JTextArea ta = new JTextArea(); // Example with a JTextArea,
depends on what you have, as I said, we need to see the code
JScrollPane sp = new JScrollPane(ta); //Add it to the component
needed, in your case the drawn line i guess
jFrame.add(sp); //Add it to the frame
安德,你可以操纵的大小:
sp.setColumnHeaderView(new JLabel("header column"));
sp.setRowHeaderView(new JLabel("header row"));
sp.setPreferredSize(new Dimension(500, 300));
3
虽然我usability concerns,下面的例子说明了如何实现该Scrollable
接口如How to Use Scroll Panes: Implementing a Scrolling-Savvy Client讨论。请特别注意getPreferredScrollableViewportSize()
的结果与getPreferredSize()
的结果的不同。单位和块增量也使寻呼稍微容易一些。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.Scrollable;
import javax.swing.SwingConstants;
/**
* @see https://stackoverflow.com/a/37460185/230513
*/
public class Test {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JScrollPane(new DrawingPanel()));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
private static class DrawingPanel extends JPanel implements Scrollable {
private static final int W = 100_000;
private static final int H = 400;
@Override
public Dimension getPreferredSize() {
return new Dimension(W, H);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(0, getHeight()/2, getWidth(), getHeight()/2);
g.drawLine(0, getHeight()/4, 0, 3 * getHeight()/4);
g.drawLine(W - 1, getHeight()/4, W - 1, 3 * getHeight()/4);
}
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(640, H);
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
if (orientation == SwingConstants.HORIZONTAL) {
return W/10;
} else {
return 10;
}
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
if (orientation == SwingConstants.HORIZONTAL) {
return W/10;
} else {
return 10;
}
}
@Override
public boolean getScrollableTracksViewportWidth() {
return false;
}
@Override
public boolean getScrollableTracksViewportHeight() {
return false;
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Test()::display);
}
}
相关问题
- 1. Java Swing - 在JFrame中制作可滚动的JPanel
- 2. 如何将滚动条直接添加到Swing中的JFrame?
- 3. Java Swing; JFrame Popup
- 4. 在Swing中向JList添加滚动条
- 5. java swing中的透明JFrame
- 6. Swing - 自定义滚动条
- 7. 如何在JFrame中设置滚动条?
- 8. Java,swing,JFrame和JPanel
- 9. 刷新JFrame? Java Swing
- 10. 为JFrame创建滚动条
- 11. JFrame滚动条和画布
- 12. 在Java中为游戏滚动JFrame
- 13. 如何在Java中使JFrame可滚动?
- 14. 的Java Swing/JFrame的听众
- 15. 水平滚动条不能在Java Swing中使用JTable
- 16. 滚动问题(Java-JFrame-JScrollBar)
- 17. Java jframe jgraph滚动平面
- 18. JScrollpane中的自定义滚动条// Java Swing
- 19. Java Swing可滚动框架
- 20. Java Swing - 可滚动面板
- 21. JTextField横向滚动java swing
- 22. 滚动数字java swing JTextField
- 23. 检索java swing JFrame图标
- 24. 添加滚动条的JFrame电网
- 25. 的Java Swing JTextArea的滚动条不显示内部
- 26. 使JTextArea在Swing中滚动
- 27. 如何在Swing中将垂直滚动条添加到JTextArea?
- 28. 滚动过在Swing
- 29. 摇摆 - 滚动JFrame的内容,而无需使用滚动条
- 30. 使用2个jframe swing Swing Jframe
由于没有人想那么远滚动,什么[*实际问题*](http://meta.stackoverflow.com/q/66377/163188)你想解决? – trashgod