小编oz1*_*1cz的帖子

带有HTML的JLabel没有正确设置宽度

我试图使用HTML div标签设置JLabel的宽度.

请考虑以下代码:

import javax.swing.*;

public class Xyzzy extends JFrame{
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Xyzzy frame = new Xyzzy();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));

                String s = "x ";
                for (int i=0; i<200; ++i)
                    s += "x ";

                JLabel jl = new JLabel("<html><div style=\"width: 300px;\">" + s + "</div></html>");

                frame.add(jl);

                frame.setSize(600, 600);
                frame.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我原本预计JLabel的宽度为300像素,但实际上它的宽度约为390像素.如果我将宽度规格更改为200px,则生成的标签宽度约为260像素.

我究竟做错了什么?

html java swing resize jlabel

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

带模板参数的make_tuple无法编译

考虑以下代码:

#include <tuple>

int main()
{
    int i;
    long k;

    auto tup1 = std::make_tuple<long>(i);   // Compiles
    auto tup2 = std::make_tuple<int>(k);    // Compiles
    auto tup3 = std::make_tuple<int>(i);    // Does not compile
    auto tup4 = std::make_tuple<int>(i+0);  // Compiles
    auto tup5 = std::make_tuple(i);         // Compiles
}
Run Code Online (Sandbox Code Playgroud)

为什么不auto tup3 = ...编译?显然,make_tuple<int>(...)想要一个右值引用作为其参数; 但为什么?

(我正在使用GCC 6.1.0.)

c++ tuples rvalue-reference c++11

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

bash命令输出为参数

假设该命令alpha产生此输出:

a b c
d
Run Code Online (Sandbox Code Playgroud)

如果我运行命令

beta $(alpha)
Run Code Online (Sandbox Code Playgroud)

然后beta将与四个参数,来执行"a","b","c"和"d".

但是,如果我运行命令

beta "$(alpha)"
Run Code Online (Sandbox Code Playgroud)

然后beta将使用一个参数执行"a b c d".

我应该写什么来执行beta两个参数,"a b c"和"d".也就是说,如何强制$(alpha)从每个输出行返回一个参数alpha?

parameters bash

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

检查网络字体中的字符

如何测试特定的 Web 字体是否包含特定的 Unicode 字符?我不能简单地在某些文本中包含该字符,因为浏览器的字体替换机制可能会选择另一种字体来显示该字符。

编辑

这是迄今为止我能想出的最佳解决方案:

首先,您必须从 Unicode下载LastResort字体:https : //www.unicode.org/policies/lastresortfont_eula.html。(这有点棘手 - 我不断收到“网络错误”,但最终我成功了。)

据称,LastResort字体的每个 Unicode 字符都有一个替换图标。

现在,让我们假设我想检查 Google 字体“Pacifico”和“Merienda”是否包含 Unicode 字符 F 和 ? (Unicode 字符 0424)。我可以使用此代码:

<!DOCTYPE html>
<html>
  <head>
    <title>Font detect</title>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Pacifico">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Merienda">
    <style>
      @font-face {
        font-family: 'LastResort';
        src: url('LastResort.ttf') format('truetype');
      }

      p.pacifico {
          font-family: Pacifico, LastResort;
          font-size: 60pt;
      }

      p.lato {
          font-family: Merienda, LastResort;
          font-size: 60pt;
      }
    </style>

  </head>
  <body>
    <p class="pacifico">F &#x424;</p>
    <p class="lato">F &#x424;</p>
  </body> …
Run Code Online (Sandbox Code Playgroud)

html fonts webfonts

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

Doxygen可以转义HTML标签吗?

我想在Doxygen注释中包含文字HTML元素。像这样:

/// This function skips all <li> elements
Run Code Online (Sandbox Code Playgroud)

如果我这样写,它将<li>被传递到HTML输出,这显然不是我想要的。

相反,我可以这样写:

/// This function skips all &lt;li&gt; elements
Run Code Online (Sandbox Code Playgroud)

在Doxygen生成的HTML中,这可以很好地工作,但是现在源代码本身中的注释非常难以辨认。

因此,看起来我必须在生成的文档或源代码的可读性之间进行选择。

确实是这种情况,还是有办法强迫Doxygen自动将其全部<blabla>转换成&lt;blabla&gt;?

html doxygen

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

为什么不带参数调用 basic_string::substr ?

如果s1和s2是字符串,那么(据我所知)

s1 = s2.substr();
Run Code Online (Sandbox Code Playgroud)

意思完全一样

s1 = s2;
Run Code Online (Sandbox Code Playgroud)

为什么有人想在substr()没有任何参数的情况下打电话?

编辑:表达同一问题的另一种方式:

为什么标准substr如此定义:

basic_string substr( size_type pos = 0,
                     size_type count = npos ) const;
Run Code Online (Sandbox Code Playgroud)

而不是这样:

basic_string substr( size_type pos,
                     size_type count = npos ) const;
Run Code Online (Sandbox Code Playgroud)

c++ stdstring

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

TypeScript:将接口转换为类

我有以下代码:

interface X {
    type : string;
    val : number;
}

class X1 implements X {
    type : string;
    val : number;
}

var p1 : X[] = [{type:'a', val:8}];

for (var n in p1) {
    var p2 : X1 = p1[n];
}
var p3 : X1 = p1[0];
Run Code Online (Sandbox Code Playgroud)

p2和p3都被声明为具有类型X1并且用类型X的值初始化.

编译器愉快地接受了p2的声明,但它抱怨p3说"不能将'X'转换为'X1'".

为何如此区别?

typescript

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

获取Emacs Lisp中当前监视器的宽度

我有一个双显示器设置(运行Ubuntu).

Emacs Lisp函数display-pixel-width给出了两个显示器的组合宽度.如何获得当前监视器的宽度(即显示当前帧的监视器)?

emacs elisp

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

在 bash 中使用数字进行大括号扩展

这段代码

echo {1..7}
Run Code Online (Sandbox Code Playgroud)

打印1 2 3 4 5 6 7。

但是这段代码

t=7
echo {1..$t}
Run Code Online (Sandbox Code Playgroud)

打印{1..7}。

我如何{1..$t}扩展到1 2 3 4 5 6 7?

bash

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

为什么要使用std :: stack或std :: queue?

我为什么要使用a std::stack或a std::queue而不是a std::vector或a std::deque?

由于容器适配器只是标准容器周围的包装器,为什么要使用它们呢?

c++ stack containers stdvector stddeque

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