小编Cha*_*mon的帖子

防止JList自动调整大小

我在JScrollPane中有一个JList,它放在一个JPanel(BorderLayout.CENTER)中,然后放在另一个JPanel的BorderLayout.EAST(这个JPanel的CENTER包含另一个JPanel)中,整个JPanel放在一个JTabbedPane中.最初,它看起来像这样: 初始JList GUI

现在我在列表中添加一些书籍:

JList里面有一些书

如果我转到另一个标签然后回来,会发生这种情况:

调整大小的JList

我不明白的是,包含JList的JPanel都设置了最小和最大大小:

JPanel listPanel = new JPanel();
listPanel.setLayout(new BorderLayout());
listPanel.add(new JScrollPane(bookList), BorderLayout.CENTER);
listPanel.setMinimumSize(listPanel.getPreferredSize());
listPanel.setMaximumSize(listPanel.getPreferredSize());
checkOutPanel.add(listPanel, BorderLayout.EAST);
Run Code Online (Sandbox Code Playgroud)

如何防止JList自动调整大小?

java user-interface swing jlist preferredsize

6
推荐指数
1
解决办法
2591
查看次数

Mockito 在mockConstruction中捕获构造函数的参数

我有以下课程:

public class Bar {
  
  private final Listener mListener;
  
  public Bar(Listener listener) {
    mListener = listener;
  }

}

public class Foo {
  
  private final int mIntField;
  private final Bar mBarObject;

  public Foo(int intField) {
    mIntField = intField;
    mBarObject = new Bar(new Listener() { ... });
  }

}
Run Code Online (Sandbox Code Playgroud)

目前,我正在为Foo类编写测试,因为Bar没有注入,所以我使用mockConstruction强制模拟调用Bar后创建的所有实例。mockConstruction但我想捕获该构造函数(即监听器)的参数。我怎样才能做到这一点?

java unit-testing mockito

6
推荐指数
2
解决办法
3212
查看次数

带有tRNS块的PNG Truecolor

我想确认我对PNG文件格式描述的解释是正确的,颜色类型为0x02,并且存在tRNS块.它在PNG网站上说:

对于颜色类型0或2,无论图像位深度如何,每个样本使用两个字节(参见7.1:整数和字节顺序).指定灰度样本值或RGB样本值的像素被视为透明(相当于alpha值0); 所有其他像素将被视为完全不透明(alpha值2bitdepth-1).如果图像位深度小于16,则使用最低有效位,其他位为0.

给这个相同的tRNS块:

Length: 6
Type: tRNS
Data: 00 ff 00 ff 00 ff 
CRC: 37581b7d
Run Code Online (Sandbox Code Playgroud)

这是否意味着RRGGGBBB:0xFFFFFF或白色被视为透明而所有其他颜色都是原样?如果是这样,对于一般情况,我需要构造一个这样的颜色数组(比如int数组),并且在解码IDAT块时,我需要查看颜色是否是透明颜色之一,如果是,它被视为(RRGGBBAA)0xRRGGBB00,还是完全透明?对于这种情况,什么是好的LUT?

谢谢!

png

4
推荐指数
1
解决办法
345
查看次数

Jetty如何创建自定义WebSocket

在线查看,我发现创建套接字的方法是使用@WebSocket注释创建一个类,并使用所需的带注释的事件方法.为了使用这个套接字,使用套接字处理程序,如下所示:

import org.eclipse.jetty.websocket.server.WebSocketHandler;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;

import rsvp.RSVPSocket;

public class RSVPWebSocketHandler extends WebSocketHandler
{

    @Override
    public void configure ( WebSocketServletFactory factory )
    {
        factory.register( MySocket.class );
    }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果"MySocket"类有一个带参数的构造函数,我怎样才能让工厂正确调用那个?

java jetty websocket

4
推荐指数
1
解决办法
1652
查看次数

C++ 虚拟析构函数和 vtable

我对虚拟析构函数和虚函数表有一些具体问题。

假设我有以下代码:

class Base
{
public:

    virtual ~Base();

};

class Child : public Base
{
public:

    ~Child();
};
Run Code Online (Sandbox Code Playgroud)

问题:

  1. vtable存储在哪里?它是否始终位于基类中,并且所有子类都只保留指向它的指针?
  2. 添加虚方法只会增加 sizeof(class) 8 个字节,对吗?(假设64位系统)如果基类存储表呢?
  3. 通过 new 运算符创建 Child 类型的实例,然后删除...会调用 Base 析构函数吗?(我问是因为 Child 类的析构函数不是虚拟的......这是否意味着它只影响 Child 的子类?)。

c++ polymorphism vtable

4
推荐指数
1
解决办法
4849
查看次数

Qt QAction动态阵列连接

我想创建一个包含可检查QAction对象的QMenu.检查一个动作后,它将触发并启用一些3D对象的绘制.但是,3D对象的数量取决于要加载的文件.因此,这个QMenu具有动态数量的QAction对象.假设我们有10个名为"1","2",......"10"的3D对象,因此QMenu中的QAction对象将显示为"1","2",......"10".选中其中一个时,将启用该名称的3D对象.

用于生成动态QAction对象的代码:

QStringList labels = defaultScene->getLabels();
for(int i=0; i<labels.size(); i++){
     QAction* labelAction = new QAction(labels[i], this);
     labelAction->setToolTip("Trace Marker " + labels[i]);
     labelAction->setStatusTip("Trace Marker " + labels[i]);
     labelAction->setCheckable(true);
     traceMenu->addAction(labelAction);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何连接这些QAction对象?具体来说,我在defaultScene中有一个bool数组,当QAction切换时,它将被切换.我怎么知道哪个QAction正在开火?切换时QAction的SIGNAL只通过bool.理想情况下,我在defaultScene中只有一个函数:

void toggleObject3D(int index){
     if(index >= 0 && index < visibleSize){
          visible[index] = !visible[index];
     }
}
Run Code Online (Sandbox Code Playgroud)

所以为了使这个工作,我需要某种来自traceMenu的SIGNAL来触发一个int变量.我不知道这样的SIGNAL.

c++ user-interface qt

3
推荐指数
1
解决办法
1035
查看次数

具有纯虚函数析构函数的多态C++

我不确定以下代码是否可以防止内存泄漏.

#ifndef RENDERABLE_H
#define RENDERABLE_H

class QGLShaderProgram;
class GLWidget;
class BoundingBox;

class Renderable{

public:
    virtual void update(float duration) = 0;
    virtual void render(QGLShaderProgram& shader, float duration) = 0;
    virtual BoundingBox* getBBox() const = 0;
    virtual void translate(float xx, float yy, float zz) = 0;
    virtual void rotate(float degrees_x, float degrees_y, float degrees_z) = 0;
    virtual void scale(float xx, float yy, float zz) = 0;
};

#endif // RENDERABLE_H
Run Code Online (Sandbox Code Playgroud)

上面的"接口"由object3d.cpp实现.然后,如果它们属于同一场景,我​​们可以将许多Object3D对象添加到Scene对象中.但是,在场景结束时,我想确保没有内存泄漏,因此我会在所有内容上调用delete.但是,在scene对象中,我有以下变量:

QVector<Renderable*>* sceneObjects;
QVector<GLTexture2D*>* sceneTextures;
QMap<QString, Material*>* sceneMaterials;
Run Code Online (Sandbox Code Playgroud)

如你看到的,

delete sceneObjects;
delete …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

C#Task.continuewith依赖于之前的Task.Result

我想知道如何使用Task.ContinueWith()方法调用一个Action,其中int是第一个任务的结果.这是相同的代码示例:

Task<int> first_task = GetFirstTask();
Action<int> next_action = (result_from_first) => { //do stuff };
first_task.ContinueWith( () => next_action(first_task.Result) );
Run Code Online (Sandbox Code Playgroud)

错误:

Error   81  Delegate 'System.Action<System.Threading.Tasks.Task<int>>' does not take 0 arguments
Run Code Online (Sandbox Code Playgroud)

c# asynchronous task

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

C++ vector <T>其中T是类中的结构

我有一个看起来像这样的课程:

template<typename T>
class MyContainer
{

public:

    struct Handle
    {
        public:

            T* Resolve();
    };

private:

    vector<Handle> mHandles;

};
Run Code Online (Sandbox Code Playgroud)

看起来他们在使用时不会为句柄编译迭代器:

vector<Handle>::iterator iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为自动它可以工作:

auto& iter = mHandles.begin();
Run Code Online (Sandbox Code Playgroud)

我不认为明确使用该类型?

c++ templates vector

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

GLSL Half(浮点)属性类型

我一直试图将一个16位浮点(半浮点)作为属性放入我的GLSL顶点着色器.它不会让我编译说:

error C7506: OpenGL does not define the global type half
Run Code Online (Sandbox Code Playgroud)

但我的#version410,所以它应该支持一半?我错过了一些明显的东西吗

opengl glsl

0
推荐指数
1
解决办法
2791
查看次数