したがって、私は(0,200)から(100000,200)までg.drawLine(x、y)を使って線を描いているサイズ500x500のJFrameを持っています。問題は、スクロールバーがないので、私は行全体を見ることができないということです。誰かがこの特定の状況でスクロールバーを持って、ポイント(100000,200)までライン全体を見る方法を教えてもらえますか?JavaのJFrameのスクロールバーSwitch
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
Iはusability concernsを有するが、以下の例では、How to Use Scroll Panes: Implementing a Scrolling-Savvy Clientで説明したようにScrollable
インタフェースを実装する方法を示す図です。特に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のswitch文
- 2. jframeのJavaスケーリング
- 3. JavaのJFrame
- 4. のJFrameのJavaエラー
- 5. Java JFrameの質問
- 6. java switch case question
- 7. Java switch文
- 8. のJavaのSwing/JFrameのリスナー
- 9. Java JFrameフリーズ
- 10. java JFrame setSize
- 11. Java GUI、JFrame、アクションリスナー
- 12. Java Swing JFrameレイアウト
- 13. java-jframe-drawline
- 14. Java、swing、JFrame、JPanel
- 15. Java - nextLine(); switch文の中で
- 16. Java switchステートメント内のメソッドスコープ
- 17. JFrameから各JPanelへのスクロールバーの追加(必要な場合)
- 18. Java Open URL JFrameの内部
- 19. スクロールの問題(Java-JFrame-JScrollBar)
- 20. 最大化のJFrameは、Java
- 21. Javaスキャナの問題(JFrame)
- 22. リファクタリングjava switch文(ブラックジャック)
- 23. JFrameのサイズが変更され、スクロールバーが表示されない
- 24. Java make JFrame "stay put"
- 25. java - 自動サイズJFrame
- 26. Java JFrameは他のJFrameからコンポーネントを継承します
- 27. Javaの複数のswitch文 - NoSuchElementException
- 28. Java switch文<identifier> issue
- 29. Java switch/case method recomended length
- 30. Java - 同じウィンドウの別のJFrame
誰がそこまでスクロールしたいと考えていないので、どのような[*実際の問題*](http://meta.stackoverflow.com/q/66377/163188)あなたが解決しようとしていますか? – trashgod