- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我从Creating two buttons at bottom left/right corner获得的代码我已经包括了我的尝试,(添加 jpanel2)
import java.awt.BorderLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ButtonsLeftAndRight {
private JFrame frame;
private JPanel pane;
private JButton button1;
private JButton button2;
public static void main(String[] args) {
SwingUtilities.invokeLater(new ButtonsLeftAndRight()::createAndShowGui);
}
public void createAndShowGui() {
frame = new JFrame(getClass().getSimpleName());
pane = new JPanel();
pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS));
button1 = new JButton("Button1");
button2 = new JButton("Button2");
pane.add(button1);
pane.add(Box.createHorizontalGlue());
pane.add(button2);
frame.add(pane, BorderLayout.SOUTH);
JButton b1 = new JButton ("A");
JButton b2 = new JButton ("B");
JButton b3 = new JButton ("C");
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel2.add(b1);
panel2.add(Box.createVerticalGlue());
panel2.add(b2);
panel2.add(Box.createVerticalGlue());
panel2.add(b3);
frame.add(panel2, BorderLayout.CENTER);
frame.setSize(500, 500);
frame.setVisible(true);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
问题是 BoxLayout 无法共享,但我需要以某种方式做到这一点,以便我可以获得垂直框
我正在尝试创建 BoxLayout
GUI,其中涉及使用按钮和 JLabels
。在下面的 ASCII 中,B
代表按钮,J
代表 JLabel
。另外,我只在按钮和 JLabels
__________________________
| |
| B J |
| B J |
| B J |
| J |
| |
|Button1 Button2 |
|________________________|
最佳答案
你可以有很多JPanel
s,每个都有不同的布局。
对于这种情况,我可以想象有 GridBagLayout
对于带有按钮和标签的面板,它们将在 JFrame
中居中的BorderLayout.CENTER
对齐并将按钮放在底部 BoxLayout
方向
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
public class ButtonsLeftAndRight {
private JFrame frame;
private JPanel bottomPane;
private JPanel centerPane;
private JButton button1;
private JButton button2;
public static void main(String[] args) {
SwingUtilities.invokeLater(new ButtonsLeftAndRight()::createAndShowGui);
}
public void createAndShowGui() {
frame = new JFrame(getClass().getSimpleName());
bottomPane = new JPanel();
bottomPane.setLayout(new BoxLayout(bottomPane, BoxLayout.LINE_AXIS));
button1 = new JButton("Button1");
button2 = new JButton("Button2");
bottomPane.add(button1);
bottomPane.add(Box.createHorizontalGlue());
bottomPane.add(button2);
frame.add(bottomPane, BorderLayout.SOUTH);
JButton b1 = new JButton("A");
JButton b2 = new JButton("B");
JButton b3 = new JButton("C");
centerPane = new JPanel();
centerPane.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
centerPane.add(b1, gbc);
gbc.gridx = 2;
centerPane.add(new JLabel("Label 1"), gbc);
gbc.gridx = 0;
gbc.gridy++;
centerPane.add(b2, gbc);
gbc.gridx = 2;
centerPane.add(new JLabel("Label 2"), gbc);
gbc.gridx = 0;
gbc.gridy++;
centerPane.add(b3, gbc);
gbc.gridx = 2;
centerPane.add(new JLabel("Label 3"), gbc);
gbc.gridx = 1;
gbc.gridy++;
centerPane.add(new JLabel("Centered Label"), gbc);
frame.add(centerPane, BorderLayout.CENTER);
frame.add(bottomPane, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我们将标签放置在 gridx = 2
中所以我们可以在 gridx = 1
中添加底部标签位置,这在 JLabel
之间提供了额外的空间。 s 和 JButton
s 的空格等于底部标签的长度。
这为我们提供了调整大小之前和之后的以下 GUI:
当然可能还有其他方法,但这是我想到的第一个
<小时/>setVisible(true)
两次,一次就够了frame.setSize(500, 500);
与 frame.pack();
使用其中之一,而不是同时使用。关于java - 使用垂直和水平粘合的 BoxLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46692485/
我有一个位于屏幕宽度 15% 处的 div。单击时,该宽度增加到 100%。它基本上是一个弹出式内容区域。 为了以良好的响应方式将原始 15% 宽度的图标居中,它们被设置为: .parent po
我有几个复杂 查询(使用子查询等...)并希望使用 OR 或 AND 语句将它们粘合在一起。 例如: where1=table.where(...) where2=table.where(...) 我
我是一名优秀的程序员,十分优秀!