我想添加JTable到JPanel其布局中null. JPanel包含其他组件.我必须添加JTable适当的位置.
最近,我开始为我工作的公司创建一个程序.就像背景信息一样,我仍然是学生和初学者程序员,所以我的解决方案可能不推荐,我不知道如何做到这一点,但它有效,我不会因为它而受到评判,因为这是一项完全与编程无关的学生作业.
关于该程序的事情是,它将在具有不同屏幕尺寸和分辨率(800x600及以上)的多台不同计算机上运行.为了确保尽可能多地占用屏幕而不丢失程序的任何部分,我将布局设置为null并使用相对值对所有内容进行硬编码.
程序是自助终端风格,我首先得到屏幕尺寸值并从那里开始(例如,从我的头顶,左侧菜单占据屏幕的八分之一,顶部栏2%,等等) .我还使用字体度量来确保组件的大小正确并且所有内容都能很好地显示.
我的问题是:为什么让布局为null而不是使用布局管理器是如此不满?(我在一些论坛上被告知这是一种可怕的做事方式)我知道布局管理器如何工作并知道如何使用不同的布局,但是对于这个程序的要求(多种不同的分辨率,自定义按钮形状和放置) ,当您更改语言时,文本在组件上发生变化等等),我无法看到自己使用布局管理器来完成所有操作.
在这种情况下,你如何让更有经验的程序员使用布局管理器?当你想要一个特定的按钮和其他特定的其他组件并不真正匹配任何预定义的布局时,你会怎么做?
如果我创建不可调整大小的JFrame,并启用Windows Aero setLocation似乎没有正确考虑窗口边框.
在下面的代码中,我希望第二帧位于第一帧的右侧,而不是边框重叠.如果禁用Aero,或者我删除了setResizable对此的调用,则按预期完成.
import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
JFrame frame1 = new JFrame("frame 1");
JFrame frame2 = new JFrame("frame 2");
frame1.setResizable(false);
frame2.setResizable(false);
frame1.setVisible(true);
Rectangle bounds = frame1.getBounds();
frame2.setLocation(bounds.x+bounds.width, bounds.y);
frame2.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么或这是一个错误?如何在没有重叠边框的情况下并排显示2个不可调整的对话框?
编辑:添加了截图(也将frame2更改为JDialog而不是JFrame)
Aero On:

Aero Off:

Aero On但可调整大小:

在各种 Pluggable Look & Feel 实现中,Swing 文本字段在可编辑、不可编辑和禁用时是什么样子的?
下面是在 Windows 和 Apple OS X 上看到的 PLAF 的答案。我也非常感谢看到其他 PLAF 的外观(例如 *nix 上的 GTK)。