小编use*_*020的帖子

仅当JTable适合视口时才启用JTable的自动调整大小

我需要在JScrollPane中创建一个带有可调整大小的列的JTable(当用户增加列宽时 - 出现水平滚动条).为此,我有用table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);.此外,当视口宽度足以包含整个表格时 - 列应该拉伸以填充视口宽度.为了实现这一点,我有getScrollableTracksViewportWidth()JTable类的覆盖方法如下:

@Override
public boolean getScrollableTracksViewportWidth() {
    return getPreferredSize().width < getParent().getWidth();
}
Run Code Online (Sandbox Code Playgroud)

这种方法很有效,除了一件事:当我第一次尝试调整列的大小时,它返回自己的宽度以开始位置.如果我快速调整列大小并释放鼠标表继续工作正常.那么,这种行为的原因是什么?为什么表尝试调整大小,即使getScrollableTracksViewportWidth()返回false?或者,也许,你可以提出更好的解决方案来实现这样的调整大小模式?

贝娄是上述问题的简单工作示例:

import javax.swing.*;

public class TestTable {
    private static Object[][] data = new Object[][] {
            { "a", "b", "c" },
            { "d", "e", "f" }
    };
    private static Object[] colNames = new Object[] { "1", "2", "3" };

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JTable table = new JTable(data, colNames) …
Run Code Online (Sandbox Code Playgroud)

java swing jtable preferredsize jviewport

13
推荐指数
1
解决办法
5235
查看次数

Android OnGestureListener Fling未检测到

我想检测屏幕块中的投掷动作.我正在使用以下代码.

public class MyinfoActivity extends Activity implements OnGestureListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ..........
        ..........
        gestureScanner = new GestureDetector(this);
        resBlock = (TableRow) findViewById(R.id.ResBlock);
        gestureScanner = new GestureDetector(this);
    }

    @Override
    public boolean onTouchEvent(MotionEvent me){
        Log.d(null,"Touch");
        if (gestureScanner.onTouchEvent(me))
            return gestureScanner.onTouchEvent(me);
        else
            return false;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2,
                       float velocityX, float velocityY) {
        Log.d(null,"Fling");
        ............
        ............
    }

    @Override
    public boolean onDown(MotionEvent arg0) {
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {}

    @Override
    public boolean onScroll(MotionEvent e1, …
Run Code Online (Sandbox Code Playgroud)

android gesture touch-event onfling

10
推荐指数
1
解决办法
1万
查看次数