したがって、私は(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. Java JFrameの質問
- 5. java switch case question
- 6. Java switch文
- 7. Java switchステートメント内のメソッドスコープ
- 8. Java - nextLine(); switch文の中で
- 9. java JFrame setSize
- 10. java-jframe-drawline
- 11. Java、swing、JFrame、JPanel
- 12. Java Swing JFrameレイアウト
- 13. リファクタリングjava switch文(ブラックジャック)
- 14. JFrameから各JPanelへのスクロールバーの追加(必要な場合)
- 15. スクロールの問題(Java-JFrame-JScrollBar)
- 16. Javaスキャナの問題(JFrame)
- 17. 最大化のJFrameは、Java
- 18. Java Open URL JFrameの内部
- 19. JFrameのサイズが変更され、スクロールバーが表示されない
- 20. java - 自動サイズJFrame
- 21. Java make JFrame "stay put"
- 22. Javaの複数のswitch文 - NoSuchElementException
- 23. Java switch/case method recomended length
- 24. Java switch文<identifier> issue
- 25. Javaのswitch文に問題がある
- 26. Java - 同じウィンドウの別のJFrame
- 27. スイング - スクロールバーを使用せずにJFrameコンテンツをスクロール
- 28. Windows 10 java gui jframe over bound
- 29. デュアルモニタ付きJavaフルスクリーンjframe
- 30. JavaがJFrameの終了を待つ
誰がそこまでスクロールしたいと考えていないので、どのような[*実際の問題*](http://meta.stackoverflow.com/q/66377/163188)あなたが解決しようとしていますか? – trashgod