Tag: layout manager

在JPanel上使用它时,不会出现JScrollPane

我一直在努力寻找解决问题的方法,但我没有运气。 这是一个示例代码: import java.awt.BorderLayout; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; public class Example extends JFrame { private static final long serialVersionUID = 1L; public Example() { JPanel contentPane = (JPanel) getContentPane(); contentPane.setLayout(new BorderLayout()); JPanel panTop = new JPanel(new BorderLayout()); //JPanel panBottom = new JPanel(new BorderLayout()); JPanel panTopCenter = new […]

使用JComboBox的Swing BoxLayout问题而不使用setXXXSize

这是一个SSCCE: import java.awt.Color; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class BoxLayoutTest extends JFrame { public BoxLayoutTest(){ JPanel main = new JPanel(); main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS)); main.setBackground(Color.red); this.add(main); JPanel northPanel = new JPanel(); JPanel middle = new JPanel(); middle.setLayout(new BoxLayout(middle, BoxLayout.X_AXIS)); middle.add(new JButton(“FOO”)); middle.add(Box.createHorizontalGlue()); JPanel aPanel = new […]

Java将JLabel与JPanel的中心对齐

我的应用程序顶部有一个栏,在JLabel的两侧都有许多按钮。 按钮的可见性取决于用户正在执行的当前任务,并且按钮的文本之一也可能根据当前状态而改变。 我想要做的是在JPanel的左边有一些按钮,JLabel的中心位于JPanel的正中央,其余的按钮位于JPanel的右侧。 到目前为止,我已经设法使用各种方法和布局管理器将按钮固定在左侧和右侧,但我无法让JLabel的中心位于JPanel的死点。 我设法获得的最好的标签是靠近中心的标签,但随着按钮设置为可见或文本发生变化,它会移动。 是否有可能迫使JLabel保持死亡中心? 注意:按钮永远不会变得足够大,无法满足JLabel的任何边缘,因此这不是问题。

如何使用流布局删除JPanel之间的填充?

这是我的Java应用程序GUI的一部分,我有一个问题。 这个GUI包含的是一个蓝色的JPanel(容器),默认的FlowLayout作为LayoutManager,它包含一个Box,它包含两个JPanels(用于删除水平间距,或者我可以使用setHgaps为零而不是Box),每个包含一个JLabel的。 这是我创建GUI部分的代码。 private void setupSouth() { final JPanel southPanel = new JPanel(); southPanel.setBackground(Color.BLUE); final JPanel innerPanel1 = new JPanel(); innerPanel1.setBackground(Color.ORANGE); innerPanel1.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT)); innerPanel1.add(new JLabel(“Good”)); final JPanel innerPanel2 = new JPanel(); innerPanel2.setBackground(Color.RED); innerPanel2.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT)); innerPanel2.add(new JLabel(“Luck!”)); final Box southBox = new Box(BoxLayout.LINE_AXIS); southBox.add(innerPanel1); southBox.add(innerPanel2); myFrame.add(southPanel, BorderLayout.SOUTH); } 我的问题是如何摆脱外部JPanel(蓝色)和Box之间的垂直填充? 我知道这是填充因为我读到了边距和填充之间的差异? “padding =元素从文本到边框周围(内部)的空间。” 这不起作用,因为这必须与组件之间的间隙(空间) 有关.-如何在MigLayout中删除JPanel填充? […]

如何在同一位置用另一个JPanel替换一个JPanel?

我有一个大约四帧的JFrame。 在给定动作之后,我想在同一位置将一个面板替换为另一个面板。 我切换它们的方法看起来像这样( this对象是一个扩展JFrame的类): public void switchPanel(){ mainPanel.remove(introPanel); mainPanel.add(questionPanel); this.repaint(); } 窗口的原始创建如下所示: mainPanel.add(titlePanel); mainPanel.add(sidePanel); mainPanel.add(introPanel);

Java:单帧与多帧

想想经典的安装过程,你有一个“下一步”按钮,当你点击它时,窗口的内容会发生变化。 为了表示这种情况,我想到了两种可能的解决方案 – 当单击“next”时,销毁当前的JFrame并创建一个新的JFrame,可能会传递给他的构造函数有用的信息(例如实际窗口大小,用户在当前帧中插入的内容,……) – 单击“下一步”时,从当前JFrame中删除所有组件,并根据需要添加新组件 第一个解决方案在OOprogramming方面看起来更好,因为我可以为不同的帧保留单独的类,我可以避免使用大量方法清空帧并重新填充它。 然而,第一个解决方案听起来有点“脏”,我应该将大量参数传递给新帧。 为了表示这种情况,我会选择第二种解决方案。 现在想想一个带有“选项”组件的菜单:在这种情况下,我会在点击“选项”时创建一个新的JFrame,这样我就可以用选项来填充它。 这是正确的解决方案吗? 有没有办法让我总能知道哪一个是最好的解决方案? 有没有我没想过的解决方案?

Java在Netbeans中导入org-jdesktop-layout

我在项目的netbeans中将org-jdesktop-layout.jar添加到我的库中。 我在以下位置找到了这个.jar文件: C:\Program Files\NetBeans 7.0.1\platform\modules 但是,仍然无法识别以下代码行: org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); 我想我错过了正确的导入声明。 什么是正确的import声明? 如果还有其他有用的信息,请告诉我们! 还有什么决定了import语句的前缀? 编辑 :以下代码似乎来自较旧的GUI库。 我有两个选择,转换为更新的GUI标准或访问旧的GUI标准? 我之前从未做过这样的事情。 我能做什么? org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(jButton1) .add(layout.createSequentialGroup() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jLabel1) .add(jLabel2)) .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(capFormattedTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 69, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(wtFormattedTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 69, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))) .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); 我想这可能是一个较旧的图书馆……提前谢谢

使用JSeperator时不寻常的差距 – Java

我一直在研究Swing GUI并在添加JSeperator后得到一些不寻常和不必要的空白,不知道如何删除它们? 或任何其他选项,如何很好地实现这一目标! 视觉描述 在JLabel “速度”和JSlider之后,差距显而易见。 相关代码 control.setLayout(new BoxLayout(control, BoxLayout.X_AXIS)); …another code omitted… control.add(orientation); //JLabel control.add(norm); //JRadioButton control.add(back); //JRadioButton control.add(new JSeparator(SwingConstants.VERTICAL)); control.add(speedLabel); //JLabel control.add(speed); //JSlider control.add(new JSeparator(SwingConstants.VERTICAL)); control.add(turnOutLabel); //JLabel control.add(right); //JRadioButton control.add(straight); //JRadioButton control.add(left); //JRadioButton 我想要的是让JSeperator把所有东西都集中在一起, 视觉描述 谢谢。

固定宽度,JPanel中带有流量的可变高度

我对Java的布局管理器有一个恼人的问题。 我有以下情况:在面板A中是另外两个具有绝对布局的面板B和具有FlowLayout的C. B是高度自定义的,并通过setPreferredSize设置固定大小。 C应具有与B相同的固定宽度,但是具有可变高度,具体取决于流中添加的组件数量。 结果A应该具有固定的宽度和A.height + B.height作为高度 – 至少这是我想要的。 然而,我得到的是面板A的宽度根本不固定(即使我设置了它的首选尺寸),面板C中的内容不是自动换行,而是以长行显示。 当然这也使得B具有比它应该更大的宽度。 我该怎么做才能解决这个问题? 有没有更好的布局,还是我必须模仿所有使用绝对布局? import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; public class Test extends JPanel { public Test () { this.setLayout( new BoxLayout( this, BoxLayout.Y_AXIS ) ); JPanel top = new JPanel( null ); top.setBackground( Color.GREEN ); top.setPreferredSize( new Dimension( […]

有没有办法强制GridLayout留下空单元格?

我有一个JTabbedPane,其中2个JPanels设置为GridLayout(13,11)。 第一个JPanel有足够的单元格填充它离开空单元格。 第二个JPanel填充的单元格明显减少,这导致每个按钮被拉伸以填满整行。 有没有办法让GridLayout尊重空单元格,所以两个JPanels中的按钮大小相同?