小编Sta*_*lav的帖子

关闭子窗口后,UI会冻结,直到第一次单击

我正在编写一个带有工具栏颜色的下拉组件.所以我从'Swing hacks'一书中提出了想法,稍微改变了构思并添加了Swing的标准JColorChooser.行为应该遵循:我点击一个按钮,出现一个带有颜色选择器的窗口; 我选择一种颜色,然后关闭下拉窗口,按钮的文字将颜色变为所选颜色.总的来说一切正常,但有一个令人不快的错误.在这些操作之后,UI冻结,按钮甚至不接受鼠标事件,如"鼠标悬停".这发生在我点击之前.然后,UI表现为所需.

这是带有概念的代码.

import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JWindow;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.colorchooser.AbstractColorChooserPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.metal.MetalComboBoxIcon;

class DropDownComponent2 {
    private JWindow _window;
    private boolean _windowShouldBeShown = false;
    private JComponent _component;
    private AbstractButton _button;
    private JFrame _ownerFrame;

    public DropDownComponent2(JFrame …
Run Code Online (Sandbox Code Playgroud)

java swing jwindow jcolorchooser

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

OpenSSL和MS CryptoAPI:不同的数字签名

我使用makecert实用程序生成了带私钥的X509证书

makecert -n "CN=RootCATest" -r -sv RootCATest.pvk RootCATest.cer 
makecert -sk MyKeyName -iv RootCATest.pvk -n "CN=tempCert" -ic RootCATest.cer -sr currentuser -ss my -sky signature —pe 
Run Code Online (Sandbox Code Playgroud)

然后我用OpenSSL将RootCATest.pvk转换为RootCATest.pem.我提取了公钥:pubRootCATest.pem

我有一个名为'msg'的小文件.我使用SHA1签署此文件.

openssl dgst -sha1 -sign c:\RootCATest.pem -out c:\openssl c:\msg
Run Code Online (Sandbox Code Playgroud)

然后我想使用MS CryptoAPI获得相同的数字签名.

这是我的代码(注意:这是理解概念的代码所以我没有释放分配的内存)

void SwapBytes(BYTE *pv, int n)
{
    BYTE *p = pv;
    int lo, hi;
    for(lo=0, hi=n-1; hi>lo; lo++, hi--)
    {
        BYTE tmp=p[lo];
        p[lo] = p[hi];
        p[hi] = tmp;
    }
}

void sign()
{
    FILE *file;
    BYTE *msg;
    int msg_size;

    HCRYPTPROV hProv;
    HCERTSTORE hStore;
    PCCERT_CONTEXT …
Run Code Online (Sandbox Code Playgroud)

openssl cryptography rsa cryptoapi mscapi

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

XmlSchemaValidationException:未声明'B'元素

我正在使用XmlReader来验证Xml对抗Xsd.

当我验证这个xml

<?xml version="1.0" encoding="utf-8" ?>
<A><B>sdf</B></A>
Run Code Online (Sandbox Code Playgroud)

针对此架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="B" type="xs:string" />

<xs:element name="A">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="B"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>
Run Code Online (Sandbox Code Playgroud)

验证没问题.

但是如果我添加命名空间:

<?xml version="1.0" encoding="utf-8" ?>
<A xmlns="myns"><B>sdf</B></A>
Run Code Online (Sandbox Code Playgroud)

和相应的架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="myns">

<xs:element name="B" type="xs:string" />

<xs:element name="A">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="B"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>
Run Code Online (Sandbox Code Playgroud)

我接受System.Xml.Schema.XmlSchemaValidationException:未声明'B'元素.为什么会这样?我该如何添加命名空间?

.net c# xml xsd

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

标签 统计

.net ×1

c# ×1

cryptoapi ×1

cryptography ×1

java ×1

jcolorchooser ×1

jwindow ×1

mscapi ×1

openssl ×1

rsa ×1

swing ×1

xml ×1

xsd ×1