RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-243717

Range's questions

Martin Hope
Range
Asked: 2022-01-13 06:30:00 +0000 UTC

更改按钮上的颜色

  • 0

我创建了一个简单的空项目(带有一个空活动),添加了最常用的按钮并决定更改其颜色。下面是代码,然后是真实情况的截图:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnClick"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="100dp"
        android:layout_height="86dp"
        android:background="@color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

我选择的颜色是黑色。结果是什么: 在此处输入图像描述

我在设备和模拟器上运行它 - 颜色是蓝色的。

信息:

  1. 安卓工作室 4.1.1
  2. 构建 #AI-201.8743.12.41.6953283,构建于 2020 年 11 月 5 日
  3. 运行时版本:1.8.0_242-release-1644-b01 amd64
  4. 虚拟机:JetBrains sro 的 OpenJDK 64 位服务器虚拟机
  5. 视窗 10 10.0

在模拟器 API 30 上,在设备上 - 29。

java
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2021-11-19 19:18:41 +0000 UTC

工厂函数 - 模板

  • 2

我正在训练,我想实现一个工厂函数——一个接受任意数量参数(可变性)的模板。算法:模板接受类型——创建的类的类型,以及参数包的类型。在参数中,参数包本身。生成的类在继承链中。编码:

#include <memory>

class Base
{
public:
    virtual void run() = 0;
};

class A : public Base
{
public:
    A(int& a, int& b) {}
    void run() override {}
};


class B : public Base
{
public:
    B(int& a) {}
    void run() override {}
};

enum class ClassConst : int
{
    _A = 0,
    _B
};

template<ClassConst mt, class... Args>
auto creator(Args&&... args)
{
    std::unique_ptr<Base> result(nullptr);
    if(ClassConst::_A == mt)
        result = std::make_unique<A>(args...);
    else if(ClassConst::_B == mt)
        result = std::make_unique<B>(args...);
    return result;
};

int main()
{
    creator<ClassConst::_A>(45, 88);
    creator<ClassConst::_B>(69);
}

代码无法编译:

  1. 未找到具有两个 int 参数的构造函数 B
  2. 移动构造函数 A 无法将 1 个 int 参数转换为 const A&

我想了解为什么会这样。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-10-02 06:28:26 +0000 UTC

从继承自 AppWidgetProvider 的类调用 startActivityForResult

  • 0

我有一个简单的小部件,它应该调用一个活动并确保得到一个结果。我实现了活动调用如下(例子大大缩减):

public class Widget extends AppWidgetProvider {

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        if ("my btn".equals(intent.getAction())) {
            Toast.makeText(context, "Вызов настроек", Toast.LENGTH_SHORT).show();
            Intent intent1 = new Intent();
            intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent1.setAction(android.provider.Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
            context.startActivity(intent1);
        }
    }
}

但是,我不知道如何得到结果。如果该类不继承自,如何实现这一点Activity?

java
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-09-25 06:36:39 +0000 UTC

访问非模板类的嵌套模板类型

  • 2

我有以下(抽象!!!)结构:

  1. 模板类,有两个参数。第一个参数是存储数据的类型,第二个是分配器,有一个默认值。此外,该类有一个将分配器作为参数的方法。 (容器)
  2. 下一个类是分配器的包装器;它存储定义分配器别名的嵌套结构。(分配器)
  3. 最后一个类是分配器本身的类。(_alloc)

编码:

template <class T>
class _alloc
{

};

struct allocator
{
    template<class T>
    struct helper_allocator
    {
        typedef _alloc<T> hlp_allocator;
    };

};

template <class T, class all = allocator>
class container
{
public:
    void replace_allocator(const all::helper_allocator<T>::hlp_allocator& a)
    {

    }
};

int main()
{
    allocator::helper_allocator<int>::hlp_allocator a;
    container<int, allocator> t;
    t.replace_allocator(a);
    return 0;
}

编译时,类syntax error: identifier 'helper_allocator'方法中出现错误。解释我在哪里误解?如果直接使用分配器类型而不是模板参数all,那么编译成功。replace_allocatorcontainer

PS:使用不适用,因为 C++11 不可用。

c++
  • 2 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-04-17 03:21:14 +0000 UTC

将指向后代对象的指针的动态数组向上转换为基本类型

  • 1

我试图弄清楚如何将一个指向基类对象的动态指针数组传递给一个函数,该函数是一个指向父类对象的动态指针数组。我写了一个简单的代码,我不明白为什么它不起作用。将指针传递给父类的对象是没有问题的,也就是说,上转换可以正常工作。也许我不太明白如何转移,我想解释和/或更正。谢谢你。

class A
{
public:
    virtual void run() = 0;
};

class B: public A
{
public:
    void run() override
    {

    }
};

void test(A** a, size_t s) // приём динамического массива указателей на объекты базового класса
{
    for (size_t i(0); i < s; ++i)
        (*(a + i))->run();
}

void test2(A* a) // приём указателя на объект базового класса
{
    a->run();
}

int main()
{
    B** a = new B * [10]; // создаем динамический массив указателей на объекты родительского класса
    B* b = new B; // создаем указатель на объект родительского класса
    test(a, 10); // попытка передать динамический массив указателей на объекты родительского класса: ERROR
    test2(b); // передача указателя на объект родительского класса: ОК
    return 0;
}

有兴趣用于学习目的。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-03-19 06:42:23 +0000 UTC

CMD 换行符输入到控制台

  • 1

有一个简单的脚本:

set /p "m=Write: "
echo %m%

需要将文本输入到变量m中,并保留换行符。让我们输入:

Привет, 
как дела?

控制台必须以相同的方式显示文本。当然,按 enter 会停止输入。尝试 #13,alt + 0183 - 但没有成功。

windows
  • 2 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-03-10 05:46:19 +0000 UTC

构建正确的架构

  • 2

在设计建筑时偶然发现了一个噱头。我有一个抽象类Model和两个后代 - Model1和Model2。Model1有一个int(a)类型的成员,而Model2 有一个const char (b)*。还有一个抽象类Render和两个后代 - Render1和Render2。Render提供了一个纯虚成员函数draw,它接受 *Model** 类型。现在,在Render1类中,在draw方法中,我执行了一些操作,我需要访问成员a, 类Model1。反过来,在Render2类中也需要访问Model2类的成员b。按照设计,Model1类不能传递给Render2类,反之亦然。在这种情况下如何行动?使用多态的基本代码如下所示:

class Model
{
public:
    virtual void init() = 0;
};

class Model1 : public Model
{
    int a;
public:
    void init() override
    {
        a = 48;
    }
};

class Model2 : public Model
{
    const char* b;
public:
    void init() override
    {
        b = "test";
    }
};

class Render
{
public:
    virtual void draw(Model* m) = 0;
};

class Render1: public Render
{
public:
    void draw(Model* m) override
    {
        // здесь сделать что - то с a
    }
};

class Render2 : public Render
{
public:
    void draw(Model* m) override
    {
        // здесь сделать что - то с b
    }
};

PS:我知道Renders不应该知道谁来找他们(类的哪个实例),但我想不出更好的办法。请告知在这种情况下如何进行。使用多态和继承是因为类太通用了。PSS:我知道 dynamic_cast,但它也破坏了架构,我试图避免它

UPD1: 当使用访问者时,我想分离继承人的能力,因为在使用一个访问者的情况下,许多库是连接的。我想要某个标题中的某个库。换句话说,是否可以这样做:

class Foo;
class Bar;

class Visitor 
{
public:
  virtual void visit(Foo &ref) = 0;
  virtual void visit(Bar &ref) = 0;

  virtual ~Visitor() = default;
};

class GetType : public Visitor 
{
public:
  std::string value;

public:
  void visit(Foo &ref) override 
  {
    value = "Foo";
  }
  void visit(Bar &ref) override 
  {
    value = "Bar";
  }

};

像这样:

class Foo;
class Bar;

class Visitor
{
public:
    virtual void visit(Foo& ref) = 0;
    virtual void visit(Bar& ref) = 0;

    virtual ~Visitor() = default;
};

class GetTypeFoo : public Visitor
{
public:
    std::string value;

public:
    void visit(Foo& ref) override
    {
        value = "Foo";
    }
    void visit(Bar& ref) override
    {
        // empty
    }

};

class GetTypeBar : public Visitor
{
public:
    std::string value;

public:
    void visit(Foo& ref) override
    {
        // empty
    }
    void visit(Bar& ref) override
    {
        value = "Bar";
    }

};

好吧,正确的方法将分别在正确的时间被调用。

  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-10-14 02:52:38 +0000 UTC

正则表达式,错误的模式

  • 1

我需要检查一个字符串是否与某个模式匹配。模板如下所示:

#include "любой-текст"

为此,我编写了以下代码:

string line = "#include \"../lights/lights.ps\"";
cmatch result;
regex reg("(\\s*)(#include)(\\s+)(\")([\\w-]+)(\")(\\s*)"); 
if (!regex_match(line.c_str(), result, reg))
{
    // no
}

但是,regex_match 返回 false。我的错误是什么?我在这里测试了正则表达式并且它有效。我怀疑问题出在我为 cpp 构造不正确的正则表达式语法中......提前致谢。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-07-29 04:33:13 +0000 UTC

估计欧几里得算法的复杂度 (gcd)

  • 2

我正在研究 Rod Stevens 的《算法》一书。最开始,介绍了寻找 GCD 的经典 Euclid 算法。一切都简单明了:

НОД(А, В) = НОД(В, А mod В)

结果,作者给出了算法的渐近复杂度,等于O(log(B))。我不知道为什么会这样。一开始,作者以搜索二叉平衡完全树的元素为例,说明了O(log(N))的复杂度。为什么这么难——我明白。至于点头,我不明白。请解释。谢谢你。

PS:我对算法复杂度估计相对较新,因此欢迎提供非常详细的解释。

алгоритм
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-07-23 04:39:55 +0000 UTC

在类外部的方法定义中引用类型别名

  • 1

做了一个小例子。编译器找不到ref类型作为getA()方法的返回值。为什么会这样?那么最好的写作方式是什么?谢谢你。

template<class T>
class A
{
    T a;
public:
    using ref = const T&;

    ref getA()const;
};

template<class T>
A<T>::ref A<T>::getA() const
{
    return a;
}
c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-07-17 22:13:27 +0000 UTC

Debian QT GDB 步进不起作用

  • 0

我有:

  1. Debian 10 x64 虚拟系统
  2. Qt Creator 4.8.2 和 Qt 5.11.3

逐步调试不起作用。反汇编层始终处于启用状态。组装时,设置“调试”。指令级被禁用。

下面是调试过程的截图: 在此处输入图像描述

如何实现通常的分步调试?谢谢你。

linux
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-07-15 22:15:59 +0000 UTC

QT从动态库导出静态方法

  • 1

实际上,该问题已在主题标题中描述。它是真的吗(当然跨平台的方法很有趣)。我想怎么做:

#ifdef Q_OS_WIN
    #define DLLEXPORT __declspec(dllexport)
#else
     #define DLLEXPORT
#endif

class Export
{
public:
    static DLLEXPORT void createLine() {...}
};

我试图打电话给:

using LibraryType = void(*)();

QLibrary lib("dynamic_library");
LibraryType creatorLine = reinterpret_cast<LibraryType>(lib.resolve("createLine"));
if(!creatorLine)
{
    // увы, метод не найден
}

此方法在 MSVS 17 - 19 中成功运行,并添加了一个 .def 文件。它在 QT 中不起作用。也许还需要一个 .def 文件,但我不知道如何将其添加到 QT。指导如何正确导出。谢谢你。

PS:由于某些未知原因,QLibrary::isLoaded()const 方法总是返回 false,即使库已成功加载(在 OS Win 中,我还没有检查其他方法)。我是QT的新手,所以我不熟悉它。

PSS:我使用依赖查看器检查了 dll,发现静态方法的名称被编译器破坏了。问题的一个小更正:如何在“销售表单”中保留静态方法的名称,同时只使用OOP(不欢迎个别功能)?

c++
  • 2 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-07-03 01:29:54 +0000 UTC

在 Hook Proc 中获取用户数据

  • 1

我有这样的课:

class Hook
{
public:
    static LRESULT WINAPI HookProc(int, WPARAM, LPARAM);
...
}

它在 dll 中(将被导出)。因此,HookProc 是一个钩子过程。在应用程序中,我创建了一个键盘挂钩。在钩子程序本身中,我想访问类的成员。在 WndProc 的情况下,有一个绝妙的方法:

SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)класс);

如何将用户数据传递给此过程?还有另一个使用 WM_COPYDATA 的选项,但是您需要再次知道目标 HWND .. 并且该钩子没有 HWND。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-06-30 03:41:08 +0000 UTC

API NotifyIcon WinAPI,不显示消息

  • 2

我正在使用 NotifyIcon API 来显示消息(Baloon 或 Win 10 上的通知)。问题是消息没有显示在屏幕上。返回值始终为true,最后一条错误信息为0(不过,我知道Shell_NotifyIcon函数调用了SetLastError(0),所以无法得到错误信息)。我创建了一个最小的示例来演示我需要的功能:

  1. 创建一个简单的窗口并将其添加到通知区域(系统托盘)+显示相应的消息(未显示)
  2. 创建一个右键单击通知区域中的图标时调用的上下文菜单
  3. 该菜单包含一个单击按钮,该按钮根据其状态显示/隐藏窗口,并且再次尝试显示一条消息(不显示,仅此而已)
  4. 当窗口关闭时,通知区域的图标被销毁,即 从中移除

另外,我添加了一个控制台,其中写入了返回值\u200b\u200bare(为方便起见)。这是示例代码:

#define _CRT_SECURE_NO_WARNINGS

#include <Windows.h>
#include <iostream>

using namespace std;

#define MENU_TEST 10
#define RBUTTON_MENU WM_USER + 3000


void showMessage(HWND hwnd, const wchar_t* mes, int flag);
LRESULT CALLBACK wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

    if (!AllocConsole())
        return -1;
    wcout.imbue(locale("rus_rus.866")); 
    wcin.imbue(locale("rus_rus.866")); 
    _wfreopen(L"CONOUT$", L"wt", stdout); 
    _wfreopen(L"CONIN$", L"rt", stdin); 

    HWND hwnd;
    MSG msg; 
    WNDCLASSEX wc; 
    wc.cbSize = sizeof(wc); 
    wc.style = CS_HREDRAW | CS_VREDRAW; 
    wc.lpfnWndProc = wndProc; 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = L"test__class"; 
    wc.cbWndExtra = NULL; 
    wc.cbClsExtra = NULL; 
    wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); 
    wc.hIconSm = LoadIcon(NULL, IDI_WINLOGO); 
    wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
    wc.hInstance = hInstance; 
    if (!RegisterClassEx(&wc)) 
        return -1; 

    hwnd = CreateWindow(L"test__class",     L"Test Notify", WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, NULL, CW_USEDEFAULT, NULL, (HWND)NULL, NULL, HINSTANCE(hInstance), NULL); 
    if (!hwnd)
        return -1;

    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
    while (GetMessage(&msg, NULL, NULL, NULL))
    { 
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
    return msg.wParam; 
}

void showMessage(HWND hwnd, const wchar_t* mes, int flag)
{
    NOTIFYICONDATA nid;
    static const GUID name  = { 0xaaaad36f, 0xd48a, 0x4306, { 0x84, 0x45, 0x73, 0x84, 0xc9, 0xf1, 0x3f, 0xa0 } };
    memset(&nid, 0, sizeof(NOTIFYICONDATA));
    nid.cbSize = sizeof(NOTIFYICONDATA);
    nid.hWnd = hwnd;
    nid.guidItem = name;
    nid.uID = 7;
    nid.uFlags = NIF_INFO | NIF_STATE | NIF_ICON | NIF_TIP | NIF_MESSAGE;
    nid.uCallbackMessage = RBUTTON_MENU;
    wcscpy_s(nid.szInfo, mes);
    nid.dwInfoFlags = NIIF_NOSOUND; 
    wcscpy_s(nid.szTip, L"Test");
    wcout << L"Message: " << mes << endl;
    wcout << L"Result function NotifyIcon: " << Shell_NotifyIcon(flag, &nid) << endl;
    wcout << L"Last error: " << GetLastError() << endl;
}

LRESULT CALLBACK wndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{
    static HMENU hMenu;

    switch (uMsg) 
    {

    case WM_CREATE: 
    {
        hMenu = CreatePopupMenu();
        AppendMenuA(hMenu, MF_STRING, MENU_TEST, "Click");
        showMessage(hwnd, L"App started", NIM_ADD);
        break;
    }

    case RBUTTON_MENU:
    {
        switch (lParam)
        {
        case WM_RBUTTONUP:
        {
            SetForegroundWindow(hwnd);
            POINT pt;
            GetCursorPos(&pt); 
            TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
            break;
        }
        default:
            break;
        }
    }
    case WM_COMMAND:
    {
        switch (LOWORD(wParam))
        {
        case MENU_TEST: 
        {
            bool visible = IsWindowVisible(hwnd);
            ShowWindow(hwnd, !visible ? SW_SHOW :SW_HIDE);
            showMessage(hwnd, !visible ? L"App restored" : L"App minimazed", NIM_MODIFY);
            break;
        }
        default: break;
        }
        break;
    }

    case WM_DESTROY: 
        showMessage(hwnd, L"App closed", NIM_DELETE);
        DestroyMenu(hMenu);
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }

}

为什么会这样?该消息顽固地没有出现..谢谢。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-03-16 18:54:52 +0000 UTC

从图表构建代码

  • 0

他们在大学里设置了一个课程——根据 DFD(数据流图或数据流图)构建代码。研究了主题领域(特别是,here)后,我得出的结论是,此类图是仅对数据流区域建模的逻辑图。也就是说,为了进一步传递它,您需要构建其他图表,例如 UML,您已经可以在其中显示 DFD 上标记的区域 - 图表。

实际上,问题是:告诉我我错了多少,他们是如何正确地做的,以及 - 真的(并且他们真的这样做)根据 DFD 图构建代码吗?如果是,那么您可以使用软件示例或算法等。谢谢你。

проектирование
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-03-08 05:19:35 +0000 UTC

以编程方式引发复制/粘贴/剪切事件

  • 1

该页面有一个textarea:

<textarea id = "txt"></textarea>

我以编程方式为其设置了处理程序。是否也有以编程方式调用这些处理程序的选项?谢谢你。

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-02-29 04:23:51 +0000 UTC

在 Inno Setup 安装程序中执行 ShellExec

  • 0

在某些条件下,您需要在安装后运行一个命令。附上AfterInstall,写了一个小程序,经过一定的操作,最后执行如下:

line := '/k "C:\Program Files\MongoDB\Server\4.0\bin\mongorestore.exe" -d test-db "C:\Users\test\Desktop\database\test-db"';
ShellExec('', 'cmd.exe', line, '', SW_SHOW, ewWaitUntilTerminated,ResultCode);

命令失败,抱怨: 在此处输入图像描述

但是,如果我从命令中删除第二个路径参数,并使其看起来像这样:

'/k "C:\Program Files\MongoDB\Server\4.0\bin\mongorestore.exe" -d test-db'

然后一切立即开始工作,系统确定要启动的进程,一切正常。此外,如果您从第二条路径中删除引号(前提是路径中没有空格),那么工作也是正确的。但是,事实是我无法确定路径中是​​否会有空格,所以我将任何路径都用引号引起来。而且,如果通过将启动的进程的路径用引号括起来,我没有遇到问题,那么通过将进程参数的路径用引号括起来,我会看到上面屏幕截图中显示的内容。为什么会发生这种情况以及如何治愈?谢谢你。

pascal
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-02-26 19:36:27 +0000 UTC

将 js 脚本连接到 Spring Boot 项目

  • 0

我正在使用 Spring Boot 库。我制作了一个基本的 html 页面(不要看这段代码,我知道这很糟糕,我从来没有做过,也不太可能,我现在只能这样做)。现在我需要从外部文件中包含一个 js 脚本。阅读,学习。制作如下。

这是 Intelligi IDEA 中的项目结构:

在此处输入图像描述

以防万一,脚本资源管理器的路径:

在此处输入图像描述

所以 IDE 中的static.js文件夹只是 IDE 本身路径的简写。

以下是页面本身:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" th:src="@{js/test.js}" src="js/text.js"></script>
</head>

<style>
    body {
        font: 11px 'Verdana';
        margin: 0;
        padding: 0;
    }
    ul {
        display: block;
        margin: 0;
        padding: 0;
        list-style: none;
    }
    ul:after {
        display: block;
        content: ' ';
        clear: both;
        float: none;
    }
    ul.menu > li {
        float: left;
        position: relative;
    }
    ul.menu > li > a {
        display: block;
        padding: 10px;
        color: white;
        background-color: darkgray;
        text-decoration: none;
    }
    ul.menu > li > a:hover {
        background-color: black;
    }
    ul.submenu {
        display: none;
        position: absolute;
        width: 120px;
        top: 30px;
        left: 0;
        background-color: white;
    }
    ul.submenu > li {
        display: block;
    }
    ul.submenu > li > a {
        display: block;
        padding: 10px;
        color: white;
        background-color: darkgray;
        text-decoration: none;
    }
    ul.submenu > li > a:hover {
        text-decoration: underline;
    }
    ul.menu > li:hover > ul.submenu {
        display: block;
    }
    ul.submenu > li > a:hover {
        background-color: black;
        text-decoration: none;
    }

    div.blockMenu{
        background-color: darkgray;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: auto;
    }

</style>

<body>

<div class = "blockMenu">
<ul class="menu">
    <li><a class="#" >Файл</a>
        <ul class="submenu">
            <li><a href=# onclick="messageBox()" >Открыть</a></li>
            <li><a href=#>Sudmenu 1</a></li>
            <li><a href=#>Sudmenu 1</a></li>
        </ul>
    </li>
    <li><a href=#>Menu 2</a>
        <ul class="submenu">
            <li><a href=#>Sudmenu 2</a></li>
            <li><a href=#>Sudmenu 2</a></li>
            <li><a href=#>Sudmenu 2</a></li>
        </ul>
    </li>
</ul>
</div>

<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

最简单的代码,到目前为止这是一个简单的笔试。代码中有一个按钮单击处理程序:

onclick="messageBox()"

此函数取自脚本。脚本本身连接在这里:

<script type="text/javascript" th:src="@{js/test.js}" src="js/text.js"></script>

以及 test.js 脚本代码本身:

function messageBox(){
    alert('Test message');
}

就这样。正如所料-在我看来,由于系统找不到脚本,因此未调用该函数。问题:如何正确写入脚本的路径?或者也许如何正确创建目录系统以便系统检测到脚本?非常感谢。

PS:在没有弹簧靴的情况下进行了测试,即 一个常规的网页和一个连接的脚本,一切正常,按钮调用警报。

UDP1

另外,这是浏览器的响应: 在此处输入图像描述

javascript
  • 2 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-02-22 06:07:13 +0000 UTC

TextField 中的数据更正

  • 0

我需要在输入过程中直接更正一些TextField中的数据。我到底想达到什么目的:

  • 严格只输入数字
  • 数字应该是 [1; 500],并且仅在此区间内
  • 删除所有字符时,字段自动写入1,超过500时,写入500
  • 前导零会被自动截断(您不能输入零​​,或带有数字“105”的示例,我们删除了一个 - 文本被更正为“5”)。

为此,我在 TextField 上挂了一个处理程序,并在其中编写了以下代码:

valueSliderStrokeWidth.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable,
                            String oldValue, String newValue) {
            System.out.println("edit text");
            String text = newValue;
            if(text.equals("")){
                valueSliderStrokeWidth.setText("1");
                return;
            }
            int num;
            try{
                num = Integer.parseInt(text);
                if(num == 0){
                    valueSliderStrokeWidth.setText("1");
                }else if(num > 500){
                    valueSliderStrokeWidth.setText("500");
                }else{
                    valueSliderStrokeWidth.setText(String.valueOf(num));
                }
            }catch(Exception ex){
                valueSliderStrokeWidth.setText(oldValue);
            }
        }
    });

一切正常,除了一件事,即在输入过程中删除前导零。例如 - 编号为“105”的示例。通过删除该单元,我得到以下回溯:

线程“JavaFX 应用程序线程”java.lang.IllegalArgumentException 中的异常:在 javafx.scene.control.TextInputControl.updateContent( TextInputControl.java:564) 在 javafx.scene.control.TextInputControl.replaceText(TextInputControl.java:548) 在 javafx.scene.control.TextInputControl.deleteText(TextInputControl.java:496) 在 javafx.scene.control.TextInputControl.deletePreviousChar (TextInputControl.java:899) 在 com.sun.javafx.scene.control.skin.TextFieldSkin.deleteChar(TextFieldSkin.java:589) 在 com.sun.javafx.scene.control.behavior.TextFieldBehavior.deleteChar(TextFieldBehavior.java :198) 在 com.sun.javafx.scene.control.behavior.TextInputControlBehavior。deletePreviousChar(TextInputControlBehavior.java:311) at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callAction(TextInputControlBehavior.java:143) at com.sun.javafx.scene.control.behavior.BehaviorBase.callActionForEvent(BehaviorBase. java:218) 在 com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callActionForEvent(TextInputControlBehavior.java:127) 在 com.sun.javafx.scene.control.behavior.BehaviorBase.lambda$new$74(BehaviorBase.java :135) com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) com.sun.javafx。 com.sun.javafx 上的 event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)。event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 在 com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 在 com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)在 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 在 com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) (EventDispatchChainImpl.java:114) 在 com.sun。 javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 在 com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 在 com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java: 74) 在 com.sun。javafx.event.EventUtil.fireEvent(EventUtil.java:54) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Scene$KeyHandler.process(Scene.java:3964) at javafx.scene .Scene$KeyHandler.access$1800(Scene.java:3910) at javafx.scene.Scene.impl_processKeyEvent(Scene.java:2040) at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2501) at com.sun .javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217) at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149) at java.security.AccessController.doPrivileged (本机方法)在 com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$352(GlassViewEventHandler.java:248) 在 com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 在 com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247) 在 com.sun.glass.ui.View.handleKeyEvent(View.java:546) 在 com.sun.glass .ui.View.notifyKey(View.java:966) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication .java:177) 在 java.lang.Thread.run(Thread.java:748)

告诉我我做错了什么以及在哪里做错了,或者一个更优雅的解决方案。谢谢你。

java
  • 1 个回答
  • 10 Views
Martin Hope
Range
Asked: 2020-02-19 14:21:44 +0000 UTC

在 JavaFX 应用程序中使用网页

  • 2

下面的任务出现在我面前:用 Java 编写一些软件,在 JavaFX 上使用 GUI。未来程序的功能之一应该是构建图表的能力(按框图的类型,ala visio,即块,与箭头的连接等)。网上研究了FX的图文库,没有找到这种(如果能给个链接,可能是我没仔细看)。我决定从另一边开始,使用 JavaScript Web 库来构建这样的方案。找到了这个:

二维绘图

如果项目不是商业的,它是免费的。我的项目不是商业的 :) (如果有更多有趣的类似物,知识渊博的人,写)另外,我了解了一个有趣的 JavaFX 组件 - WebView。把它们放在一起,我得到了电路的工作原型。那些。块移动,箭头连接.. 然而,一个问题仍未解决。WebView 的性能有点差,拖放框和东西是令人讨厌的口吃。在这方面,问题:

JavaFX 是否有 WebView 等价物?我读过 JxBrowser,它具有出色的性能,但它是完全付费的(而且非常昂贵)。因此,我请您建议是否还有其他有趣的类似物。谢谢你。

java
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5