我有两台显示器.我在第二台显示器上打开了Eclipse,但是当我运行JavaFX代码时,JavaFX窗口总是在第一台显示器中打开,每次我必须将它拖到第二台显示器上才能使用它.
我必须这样做,因为当它在第一个监视器上打开时,场景中没有任何组件被加载.仅当我将其拖动到第二个监视器时才会加载它.但是,当我断开第二台显示器时,它会正确加载.
有人可以帮帮我吗?默认情况下,如何在第二台显示器上打开窗口?
注意:我的第一台显示器是Macbook Pro,第二台是用作外接显示器的iMac.
回应评论:
任何简单的javaFX代码都会出现组件在screen1上无法正确加载的问题.例如,为了方便起见,我将@Sergey提供的代码作为答案.
码:
public class FXScreens extends Application {
@Override
public void start(Stage stage) {
VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 200, 250);
int index = 1;
for (Screen screen : Screen.getScreens()) {
Rectangle2D bounds = screen.getVisualBounds();
Button btn = new Button("Move me to Screen " + index++);
btn.setOnAction((e) -> {
stage.setX(bounds.getMinX() + 100);
stage.setY(bounds.getMinY() + 100);
});
root.getChildren().add(btn);
}
stage.setTitle("Screen Jumper");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) …Run Code Online (Sandbox Code Playgroud) 我有一个2D C风格的数组,我必须将它的一列传递给一个函数.我怎么做?
基本上我需要相当于MATLAB命令的C/C++,A[:,j]它会给我一个列向量.在C/C++中有可能吗?
我有一个项目,其中每个C/C++文件使用一堆头文件.但是每个C/C++文件使用的头文件大约有70-80%是相同的.因此,为了使我的代码更具可读性,我计划将项目中需要的所有头文件common_headers.h包含在单个头文件中,并将其包含在我的所有C/C++文件中,如下所示:
#include "common_headers.h"
Run Code Online (Sandbox Code Playgroud)
现在,这将包括所有必需的标题,但也包含一些单独文件不会使用的额外标题.我想知道如果这样做,是否会在运行时以任何机会达到性能?
我很好,有几毫秒的额外延迟来编译代码,但我想知道这是否会影响我的运行时性能?
使用的标题说明:
这是我的编译器:g ++(GCC)4.4.7 20120313(Red Hat 4.4.7-3)
我想要一个功能来检查数据是否在读取之前在套接字中等待读取.这样的事情会有所帮助:
if (data available) then read data
else wait in blocking mode till data becomes available
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中实现这一点
我有一个大项目。我想找到其中包含的所有 .cpp/.h 文件file1.h。Eclipse CDT 中是否有任何快捷键可以执行此操作?
我的项目中有一张地图.每次插入新元素时,我都希望确保插入的新元素的键至少是地图中其他元素的最小宽度.为此,我写了一个自定义比较类,如下所示:
class PulseCompare
{
public:
PulseCompare(int minwidth_):minwidth(minwidth_){};
bool operator()(const int x, const int y) const {
if(abs(x-y)>minwidth) return false;
else return true;
}
private:
int minwidth;
};
Run Code Online (Sandbox Code Playgroud)
并创建了这样的地图:
std::map<int,float,PulseCompare> pulsemap(PulseCompare(256));
Run Code Online (Sandbox Code Playgroud)
在我插入元素之前,我使用如下map.find方法:
if ( pulsemap.find(1600) == pulsemap.end() ) {
// not found so I can insert
} else {
// found
}
Run Code Online (Sandbox Code Playgroud)
但问题是,当图试图反射性地使用上述通过互换的价值比较功能x和y,就得到true了两种情况通常是不正常的比较操作等的情况<和>
在std::map::key_comp 这里的cplusplus文档页面上它说,我引用
在构造上设置地图对象的比较对象.其类型(成员key_compare)是地图模板的第三个模板参数.默认情况下,这是一个较小的对象,它返回与运算符"<"相同的对象.
此对象确定容器中元素的顺序:它是一个函数指针或一个函数对象,它接受与元素键相同类型的两个参数,如果第一个参数被认为是在第二个参数之前,则返回true.它定义的严格弱排序,否则为假.
如果key_comp以反射方式返回false,则认为两个键是等效的(即,无论键作为参数传递的顺序如何).
但这并没有说明它是反射性的情况true.谁能告诉我它的行为会是什么呢?或者我应该只通过迭代整个地图来进行间隔比较?
我正在寻找一个队列的现有实现,它将构建到指定的大小,然后如果将更多元素排入队列,则在插入新元素之前将最后一个元素解除,从而保持其大小始终<=指定大小.
我知道这很容易实现std::list,但我很想知道在C++中是否已存在这样的数据结构?
给定一个包含以下内容的文件:
1 2 3 4
5 6 7 8
a b c d
e f g h
Run Code Online (Sandbox Code Playgroud)
是否有任何unix命令可用于循环移动行和列?
我在寻找像是这样的话,
circular_shift -r 2 <file> (换行2)给出:
a b c d
e f g h
1 2 3 4
5 6 7 8
Run Code Online (Sandbox Code Playgroud)
和
circular_shift -c 2 <file> (换列2)给出:
3 4 1 2
7 8 5 6
c d a b
g h e f
Run Code Online (Sandbox Code Playgroud)
谢谢!
假设我有一个结构数组,而这些结构又有动态分配的数组,delete [] deep会删除我上面说的所有内容吗?
例如,考虑我有这样的结构:
struct A
{
char* name;
float* data;
int** image;
};
Run Code Online (Sandbox Code Playgroud)
我创建的代码中的某个位置
A** array = new A[n];
Run Code Online (Sandbox Code Playgroud)
我为我的数组中的所有结构分配内存
for(int i=0; i<n; i++)
{
array[i] = new A;
}
Run Code Online (Sandbox Code Playgroud)
然后一些其他地方类似地填充结构的内容(使用malloc/new创建名称,数据和图像).
现在,如果我说delete[] array;,到目前为止分配的所有内存(对于char*,float*,int**,结构和数组)是否会被销毁?
我的代码中有一个复杂的float数组,一个库为我生成.考虑它是这样的:
float _Complex data[N];
Run Code Online (Sandbox Code Playgroud)
为了将它作为具有实部和虚部的单独数组,我迭代数组并获取如下值:
float real[N];
float imag[N];
for (int pt=0;pt<N;pt++) {
real[pt] = creal(data[pt]);
imag[pt] = cimag(data[pt]));
}
Run Code Online (Sandbox Code Playgroud)
但这实际上是低效的,因为这是一个O(N)执行时间和空间的操作.我想知道是否可以使用一些指针算法分离数组,以便减少执行时间和内存使用量?
我需要分别绘制实数和虚数值.我的绘图库PGPLOT需要将一组值发送给它,因此我无法"就地"使用复杂数组.
我正在为我的项目进行内存泄漏.我收到一个错误,我无法理解它的根本原因.我的代码很大,所以我会在这里放置需要的块.
基本上我在一个函数中有一个数组find_pulses,我动态分配如下:
float*rmsArray;
rmsArray = (float*)malloc((N-pulse_samplewidth+1)*sizeof(float));
Run Code Online (Sandbox Code Playgroud)
我调试到这一点,发现它N-pulse_samplewidth+1不是零.(实际上~2 ^ 21)
我将值填充到此数组中,如下所示:
for (int loop1 = 0; loop1 < N-pulse_samplewidth; ++loop1) {
// populate rms array here.
}
Run Code Online (Sandbox Code Playgroud)
我将此数组发送到另一个名为findpeakthis的函数:
int* ans = findpeak(rmsArray,N,pulse_samplewidth,startsec,min,max,x);
Run Code Online (Sandbox Code Playgroud)
声明findpeak如下:
int* findpeak(float* data, int n, int pulse_samplewidth,float startsec,float min,float max, float* x);
Run Code Online (Sandbox Code Playgroud)
在findpeak函数内部,我将一个特定的值添加data到堆栈中,如下所示:
std::stack<float> peaks_y;
for (int loop1 = 0; loop1 < n; ++loop1) {
if( some condition)
{
peaks_y.push(data[loop1]); // point of error. …Run Code Online (Sandbox Code Playgroud) c++ ×7
arrays ×4
c ×4
header-files ×2
awk ×1
eclipse-cdt ×1
java ×1
javafx ×1
javafx-8 ×1
networking ×1
performance ×1
python ×1
queue ×1
sockets ×1
stdmap ×1
stl ×1
struct ×1
unix ×1
valgrind ×1