JScrollPane
にはaddAdjustmentListener()
というメソッドがありません。しかし、adjustListenerはスクロールバーと共に使用されると言われています。 JScrollPane
がいずれかの方法でスクロールされると、何か起こりたいです。そのようなことを達成するには?JScrollPaneのスクロールイベント
15
A
答えて
9
なぜ実際のスクロールバーが表示されず、調整リスナーが追加されますか? JScrollBar
にはaddAdjustmentListener()
というメソッドがあります。
そして、あなたはそれを変更リスナーを追加し、その代わりにJScrollPaneからの変更をリッスンしようとしているのJScrollPane
14
からJScrollBar
を取得するためにgetVerticalScrollBar()
とgetHorizontalScrollBar()
を使用することをスクロールペインのビューポートを取得することができます。
1
(old.good.forums.sun.com)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;
public class TilePainter extends JPanel implements Scrollable {
private static final long serialVersionUID = 1L;
private final int TILE_SIZE = 50;
private final int TILE_COUNT = 100;
private final int visibleTiles = 10;
private final boolean[][] loaded;
private final boolean[][] loading;
private final Random random;
public TilePainter() {
setPreferredSize(new Dimension(TILE_SIZE * TILE_COUNT, TILE_SIZE * TILE_COUNT));
loaded = new boolean[TILE_COUNT][TILE_COUNT];
loading = new boolean[TILE_COUNT][TILE_COUNT];
random = new Random();
}
public boolean getTile(final int x, final int y) {
boolean canPaint = loaded[x][y];
if (!canPaint && !loading[x][y]) {
loading[x][y] = true;
Timer timer = new Timer(random.nextInt(500),
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
loaded[x][y] = true;
repaint(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
}
});
timer.setRepeats(false);
timer.start();
}
return canPaint;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Rectangle clip = g.getClipBounds();
int startX = clip.x - (clip.x % TILE_SIZE);
int startY = clip.y - (clip.y % TILE_SIZE);
for (int x = startX; x < clip.x + clip.width; x += TILE_SIZE) {
for (int y = startY; y < clip.y + clip.height; y += TILE_SIZE) {
if (getTile(x/TILE_SIZE, y/TILE_SIZE)) {
g.setColor(Color.GREEN);
} else {
g.setColor(Color.RED);
}
g.fillRect(x, y, TILE_SIZE - 1, TILE_SIZE - 1);
}
}
}
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(visibleTiles * TILE_SIZE, visibleTiles * TILE_SIZE);
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
return TILE_SIZE * Math.max(1, visibleTiles - 1);
}
@Override
public boolean getScrollableTracksViewportHeight() {
return false;
}
@Override
public boolean getScrollableTracksViewportWidth() {
return false;
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
return TILE_SIZE;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Tiles");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(new JScrollPane(new TilePainter()));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
+0
+1の歴史。 – trashgod
5
Jesse Barnumによる:
// requiring that you already have JPanel additionsPane inside
// JScrollPane additionsScrollPane inside JFrame frame ...
additionsScrollPane.getViewport().addChangeListener(new ListenAdditionsScrolled());
public class ListenAdditionsScrolled implements ChangeListener{
public void stateChanged(ChangeEvent e){
additionsPane.revalidate();
frame.repaint();
}
}
関連する問題
- 1. JScrollPaneのJScrollPane
- 2. javascriptのクロスブラウザの水平スクロールイベントとverticallスクロールイベント
- 3. Javaのスイング - JScrollPaneのは、JScrollPaneの幅
- 4. tableheaderviewスクロールイベント
- 5. DataGridViewスクロールイベント
- 6. jQueryスクロールイベント
- 7. RichTextFxスクロールイベント
- 8. スクロールイベントのjquery
- 9. スクロールイベントのアニメーションアニメーション
- 10. C#のスクロールイベント
- 11. JavaScript、スクロールイベントの紛失
- 12. jqueryでtouchmoveのスクロールイベント
- 13. スクロールイベントの検出(pdfnet)
- 14. iPhoneでスクロールイベント
- 15. jScrollPaneのトラブル
- 16. JComboBoxのJScrollPane
- 17. matlabのJscrollpane
- 18. Jscrollpaneの問題
- 19. はTypeError JScrollPaneの
- 20. JScrollPaneの問題
- 21. JScrollPane - スムーズスクロール
- 22. jScrollPane synchronicity
- 23. JScrollpaneルックアンドフィール
- 24. Jscrollpaneページネーション
- 25. VB.netのテキストボックスのスクロールバーのスクロールイベント
- 26. gtkでのスクロールイベントの取得#
- 27. React.jsコール機能スクロールイベント
- 28. 固定幅のJScrollPane
- 29. JScrollPaneのJPanel位置
- 30. jScrollPane要素のスクロール
私はこれが最良の方法であることを発見しました。私は下に私のサポートコードを貼り付けました。ありがとう、ユージーン。 – ekerner