我正在编写一个旨在双显示器设置上运行的应用程序,一台显示器上的"Display"JFrame全屏显示,另一台显示器上显示"Control"JFrame,向显示器发送指令.我尝试了两种不同的方法来设置全屏显示; 每个人的成功似乎取决于操作系统.
display.setUndecorated(true);
display.setExtendedState(JFrame.MAXIMIZED_BOTH);
Run Code Online (Sandbox Code Playgroud)
适用于Windows,但JFrame隐藏在OS X和Linux的dock/panels下.
我的另一种方法,利用
GraphicsDevice.setFullScreenWindow(display);
Run Code Online (Sandbox Code Playgroud)
适用于我尝试的所有三个操作系统,但在Windows中,将控制窗口聚焦在另一个监视器上会使显示窗口隐藏,并调用
display.setAlwaysOnTop(true);
Run Code Online (Sandbox Code Playgroud)
不解决问题.我对该GraphicsDevice方法有点偏爱,因为我不必处理OS X或Linux中的问题,我希望Windows问题是一个简单的修复.是吗?
我正在尝试创建一个只显示数据的JTable,不允许任何编辑或选择.我通过运行来设置所有单元格是不可编辑的:
TableModel model = new DefaultTableModel(data, titles) {
public boolean isCellEditable(int rowIndex, int mColIndex) {
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
但我现在正试图让所有的细胞都无法选择.我找到了setRowSelectionAllowed允许我在选择单元格时禁用所选行的整个行的方法,但这并没有阻止单元格被选中.我查看了方法,DefaultTableModel但我没有看到任何isCellSelectable方法.有什么建议?
我正在开始Java类,并且赋值要求我编写一个类来表示JPanel,其中按钮用于递增和递减值,而标签用于显示值.然后,我必须创建一个单独的类来实例化面板并将其添加到框架中.我试图通过运行pack方法调整框架大小以适应面板的大小.我尝试使用以下方法调用框架的包方法:
SwingUtilities.getAncestorOfClass(JFrame.class, this).pack()
Run Code Online (Sandbox Code Playgroud)
我得到一个"找不到符号 - 方法包()"错误.getAncestorOfClass肯定会返回一个JFrame,它是正确的JFrame.当我从创建JFrame的驱动程序类内部运行pack方法时,没有问题.任何想法为什么它找不到包方法?是因为我试图从一个单独的类文件中运行它吗?我也无法访问其他一些JFrame的方法,如的getContentPane,但我是能够访问其他一些如加.咦?