使用以下代码:
Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)
Run Code Online (Sandbox Code Playgroud)
不幸的是,只返回false.
根据文档,这应该工作:http://docs.oracle.com/javase/8/docs/api/java/awt/Toolkit.html#getLockingKeyState-int-
可运行的例子:
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Foo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
public void run() {
while(true) {
try{ Thread.sleep(250); }catch(Exception ignored) { }
System.out.println("Capslock state: " + Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
}
}
});
executorService.shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
应该补充说我在Windows上使用Java SE 1.8并且我的Caplock键工作正常
控制台输出截图:

在Java中处理错误时,通常会看到超类是错误的错误,例如
Exception, IOException, SocketException, etc.
Run Code Online (Sandbox Code Playgroud)
但是,你如何找到异常的细节?如何从其他类型中单独输出某个异常类型.例如,我正在处理一个小项目,使用Netty.io该项目会为您可以命名的每种类型的读/写错误抛出IOException.这是有道理的,因为最终这是输入/输出错误,但我将如何单独处理它们.
示例例外:
java.io.IOException: An existing connection was forcibly closed by the remote host
java.io.IOException: Connection reset by peer
java.io.IOException: Stream closed
Run Code Online (Sandbox Code Playgroud)
这个列表还在继续,但是你将如何单独处理这些问题,我在环顾四周时发现了一种看起来非常讨厌的方法如下.
try {
// ...
} catch (IOException e) {
if(e.getMessage().contains("An existing connection was forcibly closed by the remote host")) {
// Handle error
} else //...
}
Run Code Online (Sandbox Code Playgroud)
这看起来非常乏味,必然会有更好的方法来做到这一点,correct如果你愿意的话.在过去的几个小时里,我已经查看了相当多的错误处理文档,他们都只谈到了常用的大男孩.IOException, Exception, SocketException, NullPointerException, and FileNotFoundException.如果我错了,我相信SocketException并且FileNotFoundException与IOException子类很可能直接相关,更正为我.
无论如何,处理这些异常的正确方法是什么,以及如何确定需要处理的异常类型?我所能做的就是处理,IOException直到出现更精确的东西,但在开发应用程序时,能够唯一地处理每个错误总是好的.
我有一个@IBOutlet连接到UIButton.在我的代码中,我有以下方法,只要用户执行操作就会执行该方法.我已经设法用一些虚拟函数替换我的代码,向你们展示我的问题是什么.
要复制此问题,我使用的是UITableViewController的子类,您可以在下面看到它:
class MyTableViewController : UITableViewController {
@IBOutlet nextOrCreateButton: UIButton!
var dummy = [1, 2]
var index: Int = 0
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dummy.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return tableView.dequeueReusableCellWithIdentifier("TemplateCell") as UITableViewCell!
}
@IBAction func onNextClicked() {
if dummy.count == (index + 1) {
dummy.append(0)
}
index++
}
func updateUI() { …Run Code Online (Sandbox Code Playgroud) 我想从我的应用程序中删除"加载更多"按钮并实现"无限滚动"类型的功能,该功能允许用户向上滚动其消息历史记录并按照请求下载旧消息.
由于ListView正在被删除,我正在转向FlatList组件,我正在尝试找出一个很好的实现来确定用户何时滚动到页面顶部.由于FlatList总是从列表顶部开始,我们希望确保仅onTopReached在用户滚动列表时调用.
我怎么能这样做?
开放源代码实现的链接将受到赞赏,但应列为注释而不是答案.使用ListView的实现是无关紧要的.
我的应用程序中的导航感觉有点卡顿,因为在初始化和第一次渲染调用完成之间,页面总是有一段时间(即使只是一瞬间)是空的。
我已经尽我所能确保组件可以尽可能快地呈现。我已经缓存了我的图像,并且在导航到我的 redux 存储中的组件之前所有数据都可用。我得到之间51ms的记录的时间 constructor 和componentDidMount这似乎微不足道,但它是不够,你可以直观地看到组件Flash到屏幕上。
我想知道是否有办法预加载组件并确保在显示屏幕之前呈现它。由于这是一个 react-native 应用程序,据我所知,我不能只是“在屏幕外渲染”然后在我准备好时使用它,但我可能是错的。然而,我们也不希望我们所有的屏幕都被不断渲染。
能够做类似的事情..
Preloader.preload(<MyComponent />)
.then(navigate('myComponent'))
真的会很好。有时组件有很大的列表,需要一段时间来呈现。当视图滑入屏幕时,列表已经在那里,这会让应用程序的流程感觉好多了。
reactjs react-native react-native-router-flux react-navigation
该类java.nio.ByteBuffer有一个ByteBuffer.array()方法,但是它返回一个数组,该数组是缓冲区容量的大小,而不是已使用的容量。因此,我遇到了很多问题。
我注意到 usingByteBuffer.remaining()给出了缓冲区当前正在使用的字节数,所以基本上我正在寻找的是一种byte[]仅获取正在使用的字节的方法。(即,正在显示的字节ByteBuffer.remaining()。
我尝试了一些不同的事情,但我似乎失败了,我能想到的唯一解决方法是使用ByteBuffer剩余缓冲区的分配大小创建另一个,然后向其中写入(x)字节。
我正在创建一个缓冲区,它将在横幅中读/写,我可以完全消除TCP分段带来的问题.我遇到的唯一问题是浮点变量,其他一切工作正常,除了浮点数.我找不到有关如何将int32位转换为float的任何信息.
将float转换为int位时,使用以下方法(直接从java的源代码中删除并转换)
private int floatToIntBits(float value)
{
int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0)
result = 0x7fc00000;
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,现在我需要做相反的事情,遗憾的是,BitConverter类中没有任何与float一起使用的函数.
我也无法在JavaDocs中找到很多信息,而不是我个人可以使用的任何信息,你可以在这里找到信息.
为什么泛型T不能用作classif 的返回类型T extends Class.
例:
public class Foo<T extends Bar> {
Bar[] array = new Bar[200];
Optional<T> forIndex(int index) {
return Optional.ofNullable(array[index]);
}
}
Run Code Online (Sandbox Code Playgroud)
T需要延长Bar哪个意味着T永远不会有铸造问题,或者我是否误解了这个?有人可以详细说明.
我一直非常关注续集的文档,当我找到关系时,我遇到了一个问题.这是我非常简单的代码,创建了两个非常基本的1:1关系belongsTo
import Sequelize, { STRING, INTEGER, TEXT } from 'sequelize';
const sequelize = new Sequelize('dbname', '', '');
const User = sequelize.define('user', {
name: STRING,
age: INTEGER
});
const Item = sequelize.define('item', {
name: STRING,
price: INTEGER
});
Item.belongsTo(User);
sequelize.sync({ force: true }).then(() => {
User.create({
name: 'Hobbyist',
age: 22,
Item: {
name: 'Phone',
price: 199
}
}, {
include: [ Item ]
});
});
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Unhandled rejection Error: item is not associated to user!
Run Code Online (Sandbox Code Playgroud) 我正在使用Redux,最近遇到了一个问题,我在这里向数组添加消息,Redux状态没有在React上重新渲染.我正在使用这个react-redux库.这是我遇到的问题的一个例子:
// State structure
structure: { messages: {}, groups: {} }
// ---
newState = { ...prevState };
newState.messages[action.message.group] = action.message;
return newState;
Run Code Online (Sandbox Code Playgroud)
这是更新状态,但它没有触发对反应组件的更新,但是替换newState = { ...prevState }为已newState = JSON.parse(JSON.stringify(prevState))解决问题.
谁能解释为什么会发生这种情况呢?我的印象是传播操作员创建了一个对象的克隆,直到现在我从来没有遇到任何问题.
java ×4
react-native ×2
bytebuffer ×1
c# ×1
exception ×1
generics ×1
ioexception ×1
ios ×1
javascript ×1
react-redux ×1
reactjs ×1
redux ×1
sequelize.js ×1