A JPanel
のJScrollPane
には、JPanel
または2が含まれています。私の人生は、キーボードの方向矢印を使ってスクロール速度を上げることに依存します。慎重な審議の末、sc.getVerticalScrollBar().setUnitIncrement(240);
は、マウスにのみ適用されるべきであり、Java開発者の間で軽微な迷惑を引き出す賢明な綱引きであるべきです。スクロール速度を上げるためにできることはありますか?私の人生はバランスに欠けている。Java - JScrollPaneのキーボードスクロール速度を設定する方法
答えて
あなたJScrollPane
に含まれる成分のためのキーボードイベントをキャプチャし、JScrollPane
にフォーカスがあるとき、キーボードイベントを処理するためにInputMap.putとActionMap.putの組み合わせを使用する必要があります。スクロールのデフォルトの増分値が1であるので、あなたが追加したり、あなたがJScrollPane.getVerticalScrollBar().getValue()
を得ることができますJScrollPane
ためのスクロールバーの現在の値に所望のインクリメント値をsubstractとJScrollPane.getVerticalScrollBar().setValue(int).
含まれる要素のためのイベントをキャプチャする例を設定する必要がありますwithing JScrollPaneには、私はボタンでやった、このコードで行うことができます、しかし、あなたは(不正なコードの組織のために申し訳ありませんが)ポイントを得る:と聞くこと
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test
{
public static void main(String[] args)
{
final JFrame f = new JFrame("");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2000,1));
for(int i = 0; i != 2000; i++)
{
JButton btn = new JButton("Button 2");
panel.add(btn);
}
final JScrollPane sPane = new JScrollPane(panel);
final int increment = 5000;
sPane.getVerticalScrollBar().setUnitIncrement(increment);
KeyStroke kUp = KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0);
KeyStroke kDown = KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0);
sPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(kUp,"actionWhenKeyUp");
sPane.getActionMap().put("actionWhenKeyUp",
new AbstractAction("keyUpAction")
{
public void actionPerformed(ActionEvent e)
{
final JScrollBar bar = sPane.getVerticalScrollBar();
int currentValue = bar.getValue();
bar.setValue(currentValue - increment);
}
}
);
sPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(kDown,"actionWhenKeyDown");
sPane.getActionMap().put("actionWhenKeyDown",
new AbstractAction("keyDownAction")
{
public void actionPerformed(ActionEvent e)
{
final JScrollBar bar = sPane.getVerticalScrollBar();
int currentValue = bar.getValue();
bar.setValue(currentValue + increment);
}
}
);
f.add(sPane);
f.pack();
SwingUtilities.invokeLater(
new Runnable()
{
public void run()
{
f.setVisible(true);
}
}
);
}
}
我々は登録してプロセスイベント:
sPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(kUp,"actionWhenKeyUp");
sPane.getActionMap().put("actionWhenKeyUp",
new AbstractAction("keyUpAction")
{
public void actionPerformed(ActionEvent e)
{
final JScrollBar bar = sPane.getVerticalScrollBar();
int currentValue = bar.getValue();
bar.setValue(currentValue - increment);
}
}
);
JScrollBar
の値を実行するキーコードは、AbstractActionです(この場合、ユーザーがアップキーを押した場合)。
public void actionPerformed(ActionEvent e)
{
final JScrollBar bar = sPane.getVerticalScrollBar();
int currentValue = bar.getValue();
bar.setValue(currentValue - increment);
}
あなたがすべきことは、JScrollPaneにフォーカスがあるときにイベントを完了することですが、それは簡単なことです。
あなたの人生を救うのに役立ちたいと思っています:Pまたは少なくともあなたを出発点としてお手伝いします。
おそらくあなたが探しているものではありませんが、Mouse Wheel Controllerを使用すると、マウスを使用してスクロールする速度を上げることができます。
私の人生は、キーボードの方向矢印を使用してスクロール速度を上げることによって決まります。
キーボードの使用時にスクロールペインをどのようにスクロールさせるのかよくわかりません。私はキーボードの矢印を使用すると、スクロールペインをスクロールすることができません。この問題を示すSSCCEを投稿してください。
編集:私の簡単なテストのために
私はちょうどスクロールペインへのJLabelを追加しました。 JLabelにはデフォルトでフォーカスが設定されていないため、スクロールペインのコンポーネントにはフォーカスがないため、スクロールバーのデフォルトのアクションは呼び出されません。ラベルをフォーカス可能にすることで、キーボードスクロールが機能します。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.event.MouseInputAdapter;
public class testeSLider extends JFrame {
private JPanel jp;
private JScrollPane sc;
public testeSLider() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
setSize(new Dimension(820, 130));
setBackground(Color.BLACK);
jp = new JPanel();
sc = new JScrollPane(jp);
jp.setBackground(Color.GRAY);
sc.setBounds(0, 0, 100, 400);
sc.setBackground(Color.DARK_GRAY);
sc.getHorizontalScrollBar().setPreferredSize(new Dimension(0, 0));
sc.setBounds(50, 30, 300, 50);
getContentPane().add(sc);
int x = 0;
for (int i = 0; i < 50; i++) {
JPanel item = new JPanel();
x = (87 * i) + (i * 10);
item.setBackground(Color.getHSBColor(new Random().nextInt(255),
new Random().nextInt(255), new Random().nextInt(255)));
item.setBounds(x, 5, 0, 0);
item.setPreferredSize(new Dimension(90, 90));
jp.add(item);
addEfeito(item);
}
}
private void addEfeito(JPanel item) {
MouseInputAdapter adapter = new MouseInputAdapter() {
private JPanel panelTmp;
private int deslocamento = 3;
private int mouseStartX;
private int mouseStartY;
@Override
public void mouseDragged(MouseEvent e) {
final JScrollBar bar = sc.getHorizontalScrollBar();
int currentValue = bar.getValue();
bar.setValue(currentValue + (mouseStartX - e.getX()));
}
@Override
public void mouseEntered(MouseEvent e) {
panelTmp = ((JPanel) e.getSource());
panelTmp.setBounds(panelTmp.getX(), panelTmp.getY(),
panelTmp.getWidth() + deslocamento,
panelTmp.getHeight() + deslocamento);
}
@Override
public void mouseExited(MouseEvent e) {
panelTmp = ((JPanel) e.getSource());
panelTmp.setBounds(panelTmp.getX(), panelTmp.getY(),
panelTmp.getWidth() - deslocamento,
panelTmp.getHeight() - deslocamento);
}
@Override
public void mouseClicked(MouseEvent e) {
mouseStartX = e.getX();
mouseStartY = e.getY();
}
@Override
public void mousePressed(MouseEvent e) {
mouseStartX = e.getX();
mouseStartY = e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
}
};
item.addMouseListener(adapter);
item.addMouseMotionListener(adapter);
}
public static void main(String args[]) {
new testeSLider();
}
}
- 1. JScrollPaneのスロースクロール速度を上げる方法は?
- 2. SoftLayerで10Gと20Gのネットワークインターフェイス速度を設定する方法
- 3. Softlayerのネットワークタイプで速度を設定する方法
- 4. IntelliJでマウスホイールのスクロール速度を設定する方法は?
- 5. ScrollToAsync(Element、ScrollToPosition、Boolean)のアニメーション速度を設定する方法は?
- 6. Eclipseの設定速度
- 7. JavaでJScrollPaneを使用する方法
- 8. アニメーションの速度を設定する - ChartJS?
- 9. Javaでインターネット速度とCPU温度を取得する方法
- 10. jScrollPane初期設定?
- 11. bugzillaの応答速度を設定および強化する方法
- 12. セレン設定速度実行テスト
- 13. Netlogo:エージェントセットを反復処理して可変速度を設定する方法
- 14. Javaの精度を設定する
- 15. Visual Studioコンソールウィンドウの設定を一度に設定する方法
- 16. JavaのJScrollPaneでスクロールしながらJPanelを固定する方法は?
- 17. 変数のインクリメントの速度を測定する方法は?
- 18. Jspiritタイムユニットの設定と速度(km /時)
- 19. Javaコンパイル速度
- 20. スパークプログラムの実行速度を測定する方法
- 21. kivyアプリケーションの速度を測定する方法
- 22. Arduino関数の実行速度を測定する方法は?
- 23. サイトの速度を詳細に測定する方法は?
- 24. 優先度キューで優先度を設定する方法
- 25. JScrollPaneのデフォルト設定は何ですか
- 26. Operaでキーボードスクロールのdivをフォーカスする方法
- 27. Javaの設定方法
- 28. イベントの緯度と経度を設定する方法
- 29. JSキーボードスクロール
- 30. Javaのスイング - JScrollPaneのは、JScrollPaneの幅
うーん、あなたはAPIへのリンクを提供していますが、述べAPI読んでいない:「)このメソッドは廃止されましたが、getActionMap(の組み合わせを使用してくださいとgetInputMap()似の挙動について。」 。ただし、Key Bindingsを使用すると、+1することができます。 – camickr
申し訳ありませんが、私の答えでそれを述べていません。 –
廃止予定のAPI使用の問題を修正しました –