当前位置: 首页 > 知识库问答 >
问题:

卡片布局中JPanel内的GUI组件不垂直对齐

澹台正业
2023-03-14
public class MyFrame extends JFrame {

    MyFrame(int width, int height, String title){
        setTitle(title);
        setSize(width, height);
        JPanel internalJP1 = new JPanel(new GridLayout(5,1));
        JLabel hobby = new JLabel("Enter your hobbies:");
        JCheckBox cricket = new JCheckBox("Cricket");
        JCheckBox music = new JCheckBox("Music");
        JCheckBox drawing = new JCheckBox("Drawing");
        JCheckBox dancing = new JCheckBox("Dancing");
        JCheckBox other = new JCheckBox("Other");

        internalJP1.add(hobby);
        internalJP1.add(cricket);
        internalJP1.add(music);
        internalJP1.add(drawing);
        internalJP1.add(dancing);
        internalJP1.add(other);

        JPanel internalJP2 = new JPanel(new GridLayout(4,1));
        JLabel payment = new JLabel("Payment by:");
        ButtonGroup buttonGroup = new ButtonGroup();
        JRadioButton cheque = new JRadioButton("Cheque", false);
        JRadioButton cash = new JRadioButton("Cash", false);
        JRadioButton debitCard = new JRadioButton("Debit Card", false);
        JRadioButton creditCard = new JRadioButton("Credit Card", false);
        buttonGroup.add(cheque);
        buttonGroup.add(cash);
        buttonGroup.add(debitCard);
        buttonGroup.add(creditCard);

        internalJP2.add(payment);
        internalJP2.add(cheque);
        internalJP2.add(cash);
        internalJP2.add(debitCard);
        internalJP2.add(creditCard);

        Container c = getContentPane();
        CardLayout cl = new CardLayout();
        c.setLayout(cl);
        c.add(internalJP1,"crd1");
        c.add(internalJP2,"crd2");
        cl.show(c,"crd1");
    }
}

public class Jtest {
  public static void main(String[] args) {
      MyFrame frame = new MyFrame(300,200,"FirstFrame");
      frame.setVisible(true);
  }
}

共有1个答案

邴姚石
2023-03-14

只需更改这行代码(在类MyFrame的构造函数中)

JPanel internalJP1 = new JPanel(new GridLayout(5,1));

对此

JPanel internalJP1 = new JPanel(new GridLayout(0,1));

即用0代替5

 类似资料:
  • 我必须为学校制作一个游戏,而且我在点击jb按钮切换jpanel时遇到了一些麻烦。我想使用CardLayout,但我对Java还不熟悉,这使得它非常困难。我的目标是将我的所有面板放在不同的类中,比如类“Panel 1”,类“Panel 2”等等(而不是在我的主(JFrame)类中创建我的JPanel,这样我的代码更容易阅读)。是否可以将CardLayout容器放入包含my JFrame的类中?还有,

  • 根据我的要求: null 详情: 我想通过只指定组件的垂直位置,将它们垂直地放在列容器中(像垂直框)。在不失去BoxLayout等布局的其他好处的情况下,最好的方法是什么? 在垂直框中,必须使用填充物来设置组件的垂直位置,或者通过调整组件的大小来设置组件的垂直位置,这样的可能性是不存在的: null

  • 当使用垂直对齐的BoxLayout时,如何阻止组件随着包含JFrame的增长而扩展,从而在底部留下额外的空间?Ive尝试了不同的布局,但很快就变得凌乱了。Ive还尝试在面板底部添加胶水,但是布局管理器将胶水处理成另一个空的JPanel,仍然导致所有组件增长。有什么建议吗?

  • 水平 & 垂直居中对齐 元素居中对齐 要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;。 设置到元素的宽度将防止它溢出到容器的边缘。 元素通过指定宽度,并将两边的空外边距平均分配: div 元素是居中的 .center { margin: auto; width: 50%; border: 3px solid green; padding: 10px; } 注意:

  • 我有一个主框架,我想用卡片布局在中心位置显示我的新用户类的对象。这里是我的主类 这是我的新用户类 我希望NewUser的对象显示在主类的中心位置

  • 我试图让两个jpanels通过这些特定面板上的按钮交换,我不想让普通的按钮在两个面板上都像普通的卡片布局使用重复在两个面板上。我已经尝试有一个按钮称为‘添加’在主面板上导致下一页和按钮在下一页称为‘返回’导致主面板。然而,出于某种原因,它不起作用。我不希望JFrame上有两个JPanel,因为稍后我将把JPanel添加到选项卡式窗格中。以下是我已经拥有的: