我试图使用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像素.
我究竟做错了什么?
考虑以下代码:
#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.)
假设该命令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?
如何测试特定的 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 Ф</p>
<p class="lato">F Ф</p>
</body> …Run Code Online (Sandbox Code Playgroud) 我想在Doxygen注释中包含文字HTML元素。像这样:
/// This function skips all <li> elements
Run Code Online (Sandbox Code Playgroud)
如果我这样写,它将<li>被传递到HTML输出,这显然不是我想要的。
相反,我可以这样写:
/// This function skips all <li> elements
Run Code Online (Sandbox Code Playgroud)
在Doxygen生成的HTML中,这可以很好地工作,但是现在源代码本身中的注释非常难以辨认。
因此,看起来我必须在生成的文档或源代码的可读性之间进行选择。
确实是这种情况,还是有办法强迫Doxygen自动将其全部<blabla>转换成<blabla>?
如果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) 我有以下代码:
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'".
为何如此区别?
我有一个双显示器设置(运行Ubuntu).
Emacs Lisp函数display-pixel-width给出了两个显示器的组合宽度.如何获得当前监视器的宽度(即显示当前帧的监视器)?
这段代码
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?
我为什么要使用a std::stack或a std::queue而不是a std::vector或a std::deque?
由于容器适配器只是标准容器周围的包装器,为什么要使用它们呢?