Tag: layout manager

使用重写getPreferredSize()而不是对固定大小的组件使用setPreferredSize()

我在这里读了一些post,我开始为什么有些人这样做 @Override public Dimension getPreferredSize() { return new Dimension(500, 500); } 代替 setPreferredSize(new Dimension(500, 500)); 不是第二个更好,因为它只创建一个Dimension对象,而第一个可能创建几个(即使它没有那么多浪费的内存)? 或者我错了? 有什么区别吗?

屏幕右下角的位置

我需要在屏幕上放置JFrame。 但我无法让它们出现在屏幕底部的右侧。 有人可以解释我如何定位它们,如果你能描述如何做,那就太好了。 这是迄今为止的代码。 //Gets the screen size and positions the frame left bottom of the screen GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); int x = (int)rect.getMinX(); int y = (int)rect.getMaxY()- frame.getHeight(); frame.setLocation(x ,y – 45);

在父JPanel中显示添加的JPanel

如何在父JPanel看到添加的JPanel ? 我正在使用Netbeans来设计我的UI。 我有一个MainFrame.java ,它包含两个面板; 即headerPanel和bodyPanel 。 在headerPanel我放了三个按钮,让它为button1 , button2和button3 。 我还创建了三个扩展JPanel独立文件,命名为panel1 , panel2和panel3 。 然后我在构造函数的MainFrame.java中添加了bodypanel内的所有三个面板。 bodyPanel.add(panel1); bodyPanel.add(panel2); bodyPanel.add(panel3); 我希望单击相应的按钮时,只有相应的面板应出现在主机的bodypanel中,即如果我单击button1则应显示panel1 。 我已经在button1鼠标监听器方法中尝试了以下代码: bodyPanel.validate(); bodyPanel.getComponent(0).setVisible(true); 但是panel1没有出现。 我这样做是因为面板中添加的组件被分配了索引。 所以首先我尝试获取组件然后使其可见。 它不起作用。

如何将JLabel定位到Java GUI上的绝对位置

我在JPanel有很多JLabel (包括ImageIcon )。 而这个JPanel只是GUI上的一个面板; 还有很多其他面板。 我想将标签放在JPanel容器上的精确像素坐标上。 如果不使用GroupLayout ,我该怎么做?

JScrollPane中的Java JPanel?

我有一个JFrame,在这个JFrame中我有一个我绘制的JPanel,这个Panel可以是任何大小,所以我把它放到一个JScrollpane中让我在面板大于窗口屏幕大小时滚动。 不幸的是,我的预期不起作用: 使JFrame窗口小于JPanel大小不会显示滚动条 JScrollPane大小现在似乎已锁定到我添加到它的JPanel的大小,之前它调整到它的JFrame窗口的边界(它仍然有点这样但现在只是垂直?!) 无论我为首选大小设置什么,JPanel似乎都假设JScrollpane的大小 我确信我做的事情很愚蠢,如果有人能够指出我会非常感激的! JPanel _ImageCanvas = new JPanel(); // ‘Canvas’ to draw on JScrollPane _ScrollPane = new JScrollPane(); // set size of ‘canvas’ _ImageCanvas.setMinimumSize(new Dimension(100,100)); // Scroll pane smaller then the size of the canvas so we should get scroll bars right? _ScrollPane.setMinimumSize(new Dimension(50,50)); // Add a border to ‘canvas’ _ImageCanvas.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, […]

Java,将布局设置为null

我一直在使用null布局,我很多人会说它不应该这样做。 有没有更好的办法? 一些代码作为示例: import javax.swing.*; public class Main{ public static void main(String args[]){ JFrame frame = new JFrame(); JPanel panel = new JPanel(); JButton button = new JButton(“Click”); //JFrame, frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setSize(500, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); //JPanel, panel panel.setLayout(null); //<<—- Is this correct? frame.add(panel); //JButton, button button.setBounds(25, 25, 100, 60); //<<—- Is this correct? panel.add(button); […]

在任何屏幕分辨率中定位图像

我的程序有问题。 每当我更改屏幕分辨率时,我的图像就会开始移动到位置之外。 有关如何使我的图像保持在同一位置的任何建议,即使我更改为任何其他分辨率? p2 = new JPanel(); p2.setLayout(new FlowLayout()); ImageIcon img2 = new ImageIcon(“C:\\Drum\\Invisible4.png”); jbtn2 = new JLabel(img2); p2.add(jbtn2); add(jbtn2); jbtn2.setSize(jbtn2.getPreferredSize()); jbtn2.setLocation(140, 380);

使用BorderLayout将JButton放在屏幕的中心

如何使用BorderLayout()将JButton添加到JFrame的中心? 我尝试使用BorderLayout.CENTER ,但它取代了屏幕的中心,它给出了屏幕的顶部中心。 或者我是否必须使用其他布局管理器?

在Swing GUI中定位组件

我有一些关于定位组件的问题以及关于文本字段和文本区域的一些问题(Java Swing)。 任何帮助是极大的赞赏。 现在我试图让两个文本字段彼此相邻,每个文本字段上面都有一个不同的标签,用于描述该文本字段的作用。 为此,我将它们放在GridLayout(2, 2) 。 这是最好的方法吗? 这是我知道直接在另一个组件上标签的唯一方法。 有没有更好的办法? 如果一个按钮上方只有一个标签怎么办? 通过GridLayout(2, 1)来定位它是否明智? 我视力受损,所以我不认为定位按钮只是它们的像素位置是一个选项,除非有一个简单的方法将组件放在相对像素数的另一个组件。 这引出了我的下一个问题。 拥有与上面相同的UI但是在其下居中的另一个组件(按钮)的最佳方法是什么。 本质上,UI应该由两个命名文本字段组成,其下有一个计算按钮。 我这样做的方法是将上面的组件放在一个面板中,然后将这个加上计算按钮添加到带有GridLayout(2, 1)的周围面板。 问题是按钮变得和它上面的面板一样大(我假设)。 如何调整此选项仍然可以在文本字段/标签面板下完美对齐按钮? 与文本区域上方的标签类似。 标签应该很小,但文本区域下面有更大的空间。 (文本字段):再次参考上面的UI,如果用户在第一个文本字段中键入了许多字符,那么字母是否会超过右侧的文本字段? 如果是这样我怎么能阻止这个? 如果我将文本附加到文本区域并且它已经满了,它会自动允许用户滚动吗? 如果不是什么是使文本区域可滚动的简单方法? 现在我没有设置文本区域的大小。 它是否随着我添加文字而增长? 它是否具有字符数的默认大小?

jScrollPane无法添加组件

我在表单上有一个jScrollPane和一个按钮。 该按钮将组件添加到jScrollPane 。 我正在使用具有中心对齐的FlowLayout来安排jScrollPane的组件。 第一个组件没有出现问题,并且完美对齐。 当我再次按下按钮时,似乎没有任何事情发生。 当我按照调试器时,它显示一切都像以前一样发生。 单击按钮时执行的代码: jScrollPane.getViewport().add(new Component()); 这是我在jScrollPane的Viewport上设置FlowLayout的方法: jScrollPane.getViewport().setLayout(new FlowLayout(FlowLayout.CENTER));