如何正确处理图形上下文 - 我需要使用try和finally吗?简单的例子:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
try {
g2D.drawLine(0, 0, 10, 0);
} finally {
g2d.dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
这是java.awt.Window类的一个例子:
/**
* {@inheritDoc}
*
* @since 1.7
*/
@Override
public void paint(Graphics g) {
if (!isOpaque()) {
Graphics gg = g.create();
try {
if (gg instanceof Graphics2D) {
gg.setColor(getBackground());
((Graphics2D)gg).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
gg.fillRect(0, 0, getWidth(), getHeight());
}
} finally {
gg.dispose();
}
}
super.paint(g);
}
Run Code Online (Sandbox Code Playgroud)
依我之见,用来构造非常简单,但try和finally依然存在.所以我认为使用它们是一个好习惯.
有什么区别:
//Some code, takes a bit of time to process
(new SomeJFrame()).setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
(new SomeJWindow()).start();//Start a new thread
}
});
Run Code Online (Sandbox Code Playgroud)
和:
class doGraphics extends SwingWorker<Void, Object> {
@Override
public Void doInBackground() {
//Some code, takes a bit of time to process
(new SomeJFrame()).setVisible(true);
return null;
}
@Override
protected void done() {
(new SomeJWindow()).start();//Start a new thread
}
}
(new doGraphics()).execute();
Run Code Online (Sandbox Code Playgroud)
哪种方法更好用?
在编译C++代码时,我收到此警告:
不推荐使用从字符串常量转换为'LPSTR {aka char*}'[-Wwrite-strings]
&pi))//指向PROCESS_INFORMATION结构的指针.
^
代码是:
STARTUPINFO si;
memset(&si, 0, sizeof (STARTUPINFO));
si.cb = sizeof (STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = FALSE;
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof (PROCESS_INFORMATION));
if (!CreateProcess("C:\\Program Files\\Java\\jre7\\bin\\javaw.exe",
" -jar install.jar", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
0, // Set handle inheritance to FALSE.
CREATE_NO_WINDOW, // ON VISTA/WIN7, THIS CREATES NO WINDOW
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer …Run Code Online (Sandbox Code Playgroud) 在C++中switch使用a 有什么替代方法wstring吗?在Java中没有问题 - switch接受String.
如何将JFileChooser标签“查找于:”更改为“保存于:”(不是标题)?在这里你可以看到我想要改变的内容:

要求:
...
Content-Range: bytes 27482871-41601067/41601068
...
Run Code Online (Sandbox Code Playgroud)
我试图从文件中读取字节,然后再读取到 GZIP。响应如下所示:
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
...
Server: GlassFish Server Open Source Edition 4.1
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.1 Java/Oracle Corporation/1.8)
Date: Thu, 26 Nov 2015 21:44:21 GMT
Accept-Ranges: bytes
Connection: keep-alive
Keep-Alive: timeout=1800
Content-Disposition: attachment;filename*=utf-8''Marq_Aurel_Rayman_Rave_-_Intdo_The_Blue_%28Max_R_remix%29.wav
ETag: Marq_Aurel_Rayman_Rave_-_Intdo_The_Blue_%28Max_R_remix%29.wav-41601068-1403655006000
Cache-Control: private,max-age=604800
Last-Modified: Wed, 25 Jun 2014 00:10:06 GMT
Content-Range: bytes 27482871-41601067/41601068
Content-Encoding: gzip
...
Run Code Online (Sandbox Code Playgroud)
如果我暂停并继续下载,下载将失败。也许我永远不应该在范围响应中使用 GZIP?
我注意到,如果我用这两种方式编写HTML代码,浏览器行为会有所不同 - 第一种方式是没有换行:
<div class='sep'>▪</div><input type='radio' id='uplToday' name='upldateRangeSel' value='1'><label for='uplToday'>Today</label>
Run Code Online (Sandbox Code Playgroud)
第二个:
<div class='sep'>▪</div>
<input type='radio' id='uplToday' name='upldateRangeSel' value='1'>
<label for='uplToday'>Today</label>
Run Code Online (Sandbox Code Playgroud)
在第二个例子的情况下 - 我可以看到在输入元素之前添加了空白字符(在下面选择它 - 以蓝色显示):

如何删除此空格?编写没有换行符的HTML代码不是一个好主意..
怎么知道它paintComponent(Graphics g)完成了它的工作?
我可以:
@Override
public void paintComponent(Graphics g) {
try {
//Paint some stuff
} finally {
//Do something after painting
}
}
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?
我想知道如何声明新的KeyStroke - 按下并释放?例如,我可以这样做:
KeyStroke.getKeyStroke("pressed F10");
KeyStroke.getKeyStroke("released F10");
Run Code Online (Sandbox Code Playgroud)
但是如何以这样的方式写作?:
KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0);
Run Code Online (Sandbox Code Playgroud) 是否可以使用JavaDB/Derby以小写形式创建表及其名称?要检查表是否存在,我正在使用:
ResultSet rs = dbmd.getTables(null, "APP", "user_properties", null);
if (!rs.next()) {/*do something*/};
Run Code Online (Sandbox Code Playgroud)
但是表名'user_properties'必须在目录中加工.
java ×6
swing ×5
c++ ×2
css ×1
derby ×1
graphics ×1
graphics2d ×1
gzip ×1
html ×1
http ×1
invokelater ×1
java-7 ×1
javadb ×1
jfilechooser ×1
jframe ×1
keystroke ×1
range ×1
string ×1
swingworker ×1
try-finally ×1