因此,我使用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