热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javapanel和button,java–JButton在JPanel上,它不应该

而不是setLayout(null),学习使用layouts对您有利.下面的示例使用一系列nestedlayouts在另一个网格中添加一个网格.importjava.awt.Col

而不是setLayout(null),学习使用layouts对您有利.下面的示例使用一系列nested layouts在另一个网格中添加一个网格.

zXKBC.png

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

/**

* @see https://stackoverflow.com/a/36243395/230513

*/

public class Test {

private static final int ROW = 2;

private static final int COL = 5;

private void display() {

JFrame f = new JFrame("Test");

f.setLayout(new GridLayout(0, 1));

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel top = new JPanel(new GridBagLayout());

top.setBackground(Color.darkGray);

JLabel label = new JLabel("Post no bills.");

label.setForeground(Color.yellow);

top.add(label);

f.add(top);

f.add(createGridPanel());

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

private JPanel createGridPanel() {

JPanel p = new JPanel(new GridLayout(ROW, COL, 5, 5));

p.setBorder(BorderFactory.createLineBorder(Color.yellow,5));

p.setBackground(Color.yellow);

for (int r = 0; r

for (int c = 0; c

p.add(createSubPanel());

}

}

return p;

}

private JPanel createSubPanel() {

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

JPanel top = new JPanel();

top.add(new JButton("One"));

top.add(new JButton("Two"));

JPanel bot = new JPanel();

bot.add(new JRadioButton("A"));

bot.add(new JRadioButton("B"));

bot.add(new JRadioButton("C"));

bot.add(new JRadioButton("D"));

p.add(top);

p.add(bot);

return p;

}

public static void main(String[] args) {

EventQueue.invokeLater(new Test()::display);

}

}

附录:“我想……下一个和后面两个JButton.”

要允许按钮从一个面板导航到另一个面板,请使用CardLayout,如here所示,并在下面进行修订.

33e93d76b9520633a53caaf32b1c493c.png

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

/**

* @see https://stackoverflow.com/a/36243395/230513

*/

public class CardPanel extends JPanel {

private static final JPanel cards = new JPanel(new CardLayout());

private final String name;

public CardPanel(String name) {

super(new GridLayout(0, 1));

this.name = name;

JPanel top = new JPanel(new GridBagLayout());

top.setBackground(Color.darkGray);

JLabel label = new JLabel(name);

label.setForeground(Color.yellow);

top.add(label);

JPanel bot = new JPanel();

bot.setBorder(BorderFactory.createLineBorder(Color.yellow, 5));

bot.add(new JRadioButton("A"));

bot.add(new JRadioButton("B"));

bot.add(new JRadioButton("C"));

bot.add(new JRadioButton("D"));

this.add(top);

this.add(bot);

}

@Override

public String toString() {

return name;

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

create();

}

});

}

private static void create() {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for (int i &#61; 1; i <9; i&#43;&#43;) {

CardPanel p &#61; new CardPanel("Panel " &#43; String.valueOf(i));

cards.add(p, p.toString());

}

JPanel control &#61; new JPanel();

control.add(new JButton(new AbstractAction("⊲Prev") {

&#64;Override

public void actionPerformed(ActionEvent e) {

CardLayout cl &#61; (CardLayout) cards.getLayout();

cl.previous(cards);

}

}));

control.add(new JButton(new AbstractAction("Next⊳") {

&#64;Override

public void actionPerformed(ActionEvent e) {

CardLayout cl &#61; (CardLayout) cards.getLayout();

cl.next(cards);

}

}));

f.add(cards, BorderLayout.CENTER);

f.add(control, BorderLayout.SOUTH);

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

}



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
author-avatar
菜鸟来袭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有