小编haz*_*haz的帖子

JavaFx 8 - 相对于鼠标位置缩放/缩放ScrollPane

我需要相对于鼠标位置放大/缩小滚动窗格.

我目前通过将我的内容包装在一个组中,并缩放组本身来实现缩放功能.我使用自定义数据透视创建一个新的Scale对象.(枢轴设置为鼠标位置)

这适用于组的初始比例为1.0的情况,但之后的缩放不会在正确的方向上缩放 - 我相信这是因为当缩放组时相对鼠标位置会发生变化.

我的代码:

@Override
public void initialize(URL location, ResourceBundle resources) {

    Delta initial_mouse_pos = new Delta();

    anchorpane.setOnScrollStarted(event -> {
        initial_mouse_pos.x = event.getX();
        initial_mouse_pos.y = event.getY();
    });

    anchorpane.setOnScroll(event -> {
        double zoom_fac = 1.05;
        double delta_y = event.getDeltaY();

        if(delta_y < 0) {
            zoom_fac = 2.0 - zoom_fac;
        }

        Scale newScale = new Scale();
        newScale.setPivotX(initial_mouse_pos.x);
        newScale.setPivotY(initial_mouse_pos.y);
        newScale.setX( content_group.getScaleX() * zoom_fac );
        newScale.setY( content_group.getScaleY() * zoom_fac );

        content_group.getTransforms().add(newScale);

        event.consume();
    });
}

private class Delta { double x, y; }
Run Code Online (Sandbox Code Playgroud)

如何在不同的缩放级别获得正确的鼠标位置?是否有一种完全不同的方式来缩放ScrollPane更容易?

java javafx zoom scrollpane javafx-8

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

使用平台通道在Flutter中调用本机库

使用平台通道,Flutter可以与本机平台互操作(即读取电池电量).在Android上,这需要调用Java方法.

我想使用第三方Java SDK(适用于AWS Cognito).我可以将这个库放在我的某个地方/android,并与之交互吗?如果是这样,我该怎么做?

java android interop flutter

7
推荐指数
2
解决办法
7077
查看次数

使用docker-compose连接到RabbitMQ容器

我想在一个容器中运行RabbitMQ,在另一个容器中运行工作进程。工作进程需要访问RabbitMQ。

我希望这些可以通过管理docker-compose

docker-compose.yml到目前为止,这是我的文件:

version: "3"

services:

  rabbitmq:
    image: rabbitmq
    command: rabbitmq-server
    expose:
      - "5672"
      - "15672"

  worker:
    build: ./worker
    depends_on:
      - rabbitmq
    # Allow access to docker daemon
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

因此,我公开了RabbitMQ端口。工作进程使用以下URL访问RabbitMQ:

amqp://guest:guest@rabbitmq:5672/
Run Code Online (Sandbox Code Playgroud)

它们在官方教程中使用的是它们,但localhost已被替换为rabbitmq,因为容器应该可以使用与容器名称相同的主机名发现:

默认情况下,Compose为您的应用设置单个网络。服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现。

每当我运行此命令时,都会出现连接拒绝错误:

Recreating ci_rabbitmq_1 ... done                                                                                                                                                    
Recreating ci_worker_1   ... done                                                                                                                                                    
Attaching to ci_rabbitmq_1, ci_worker_1                                                                                                                                              
worker_1    | dial tcp 127.0.0.1:5672: connect: connection refused                                                                                                                   
ci_worker_1 exited with code 1        
Run Code Online (Sandbox Code Playgroud)

我发现这很有趣,因为即使我将其指定为主机名,它也会使用IP地址127.0.0.1(我认为)是。我不是Docker网络方面的专家,所以也许这是理想的。localhostrabbitmq

如果需要,我很乐意提供更多信息!


编辑

有几乎相同的问题在这里 …

networking rabbitmq docker docker-compose

6
推荐指数
3
解决办法
5607
查看次数

Selenium 的 driver.get() 在函数组合下不起作用

driver.get(url)当我尝试将它与其他函数组合时,调用会导致错误。这是我的小功能方法:

const webdriver = require('selenium-webdriver');
const By        = webdriver.By;
const R         = require('ramda');

// Load a webpage
const loadPage = url => driver => driver.get(url)

// Find an WebElement via some locator
const getElement = locator => driver => driver.findElement(method)

// Locator by name
const byName = name => By.name(name)

// Send a series of input keys to a WebElement
const sendKeys = keys => elem => elem.sendKeys(keys)
Run Code Online (Sandbox Code Playgroud)

以下最小示例加载 Google,并向搜索栏写入一条消息。这有效:

// Navigate to the Google webpage
const loadGoogle = …
Run Code Online (Sandbox Code Playgroud)

javascript selenium functional-programming ramda.js

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

使 TextField 换行,而不是溢出

我正在使用一个简单的TextField包裹在Container. 当用户键入一个长字符串时,我希望它自动换行到新行。

它目前从屏幕上流出,在一行上。我该如何解决?

input textfield dart flutter

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

如何更改颜色滚动溢出指示器?

当用户滚动到列表或 TabView 的边缘时,结束边缘会出现一个蓝色动画圆圈。

这叫什么,我如何改变它的颜色?

干杯。

dart material-design flutter

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

如何在不使用本机SDK的情况下使用AWS Cognito登录

对于使用Flutter和Dart构建的应用程序,我想使用Cognito对我的用户进行身份验证.

不幸的是,Dart不存在原生AWS开发工具包,我不能在Flutter中使用JS互操作.

我查看了OAuth2流程,但这需要将我的用户重定向到登录表单,这对于移动应用程序来说并不是很好.

有哪些替代方案?

amazon-web-services amazon-cognito flutter

5
推荐指数
2
解决办法
2677
查看次数

AWS Amplify 在 API 请求中使用访客凭证,而不是经过身份验证的凭证

我在 MobileHub 中使用 AWS Amplify 库。

我连接了一个 Cognito 用户池和一个 API 网关(与 Lambda 函数通信)。我希望我的用户在访问资源之前进行签名,因此我在 MobileHub 用户登录页面和云逻辑页面中启用了“强制登录”。

身份验证工作正常,但是当我向 API 发送 GET 请求时,收到此错误:

"[WARN] 46:22.756 API - ensure credentials error": "cannot get guest credentials when mandatory signin enabled"
Run Code Online (Sandbox Code Playgroud)

我了解 Amplify 会生成访客凭证,并将这些凭证放入我的 GET 请求中。由于我启用了“强制登录”,这不起作用。

但是为什么要使用访客凭证呢?我已经登录 - 它不应该使用这些凭据吗?如何使用已验证用户的信息?

干杯。

编辑:这是来自 Lambda 函数的代码:

拉姆达函数:

import { success, failure } from '../lib/response';
import * as dynamoDb from '../lib/dynamodb';

export const main = async (event, context, callback) => {
    const params = {
        TableName: 'chatrooms',
        Key: {
            user_id: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-mobilehub aws-amplify

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

如何在客户端 NextJS 中使用 Apollo GraphQL 订阅?

我是 NextJS 的新手。我有一个页面需要显示从 Hasura GraphQL 后端提取的实时数据。

在其他非 NextJS 应用程序中,我将 GraphQL 订阅与 Apollo 客户端库结合使用。在幕后,这使用了 websocket。

当不使用订阅时,我可以让 GraphQL 在 NextJS 中工作。我很确定这是在服务器端运行的:

import React from "react";
import { AppProps } from "next/app";
import withApollo from 'next-with-apollo';
import { ApolloProvider } from '@apollo/react-hooks';
import ApolloClient, { InMemoryCache } from 'apollo-boost';
import { getToken } from "../util/auth";

interface Props extends AppProps {
    apollo: any
}

const App: React.FC<Props> = ({ Component, pageProps, apollo }) => (
    <ApolloProvider client={apollo}>
        <Component {...pageProps}/>
    </ApolloProvider>
);

export default …
Run Code Online (Sandbox Code Playgroud)

typescript apollo reactjs next.js apollo-client

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

在 SlateJS 中,当存在多个编辑器时如何将焦点更改为特定编辑器?

我的应用程序中有多个 SlateJS 编辑器,代表单个页面。添加新页面时,我希望将焦点更改为该页面内的编辑器。

我不知道该怎么做!我的文档检查,并有onFocusonBlur钩插件,但这是反应焦点的变化。在slack 社区片段上有这样的:

// Moving cursor to the end of the document
ReactEditor.focus(editor);
Transforms.select(editor, Editor.end(editor, []));
Run Code Online (Sandbox Code Playgroud)

但我也不能让它工作。这是我的代码的简化版本:

根元素

<div>
    {pages.map((pageID: number) => (
        <Page onChange={updatePage(pageID)}/>
    ))}
</div>
Run Code Online (Sandbox Code Playgroud)

页面元素

<div>
    <Input onChange={onChange}/>
</div>
Run Code Online (Sandbox Code Playgroud)

然后<Input/>元素从 中呈现SlateEditable组件slate-react

我试过 RTFM,但除了插件页面之外,我合法地找不到任何关于管理焦点的信息。

我试过添加一个focusOnRender布尔道具,并在Input元素上使用它的钩子:

useEffect(() => {
    if (focusOnRender)
        ReactEditor.focus(editor);
}, [focusOnRender]);
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用。

描述一个editor.focus()函数的文档中找到了这个页面,但是当我尝试这个时,我收到以下错误:

TypeError: editor.focus is …
Run Code Online (Sandbox Code Playgroud)

javascript focus typescript reactjs slatejs

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