Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JPanel不工作

JPanel不工作
EN

Stack Overflow用户
提问于 2014-03-11 03:35:43
回答 1查看 190关注 0票数 2

我正在尝试垂直对齐JPanel。setAlignmentY没有像预期的那样工作。以下是我迄今所做的工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class ValignJPanel {

    public static void main(String args[]) {
        JFrame frame = new JFrame("Vertical Alignment");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel1 = wrapPanel(createPanel(), Component.TOP_ALIGNMENT);
        JPanel panel2 = wrapPanel(createPanel(), Component.CENTER_ALIGNMENT);
        JPanel panel3 = wrapPanel(createPanel(), Component.BOTTOM_ALIGNMENT);

        frame.setLayout(new GridLayout(1, 3));
        frame.add(panel1);
        frame.add(panel2);
        frame.add(panel3);

        frame.setSize(400, 150);
        frame.setVisible(true);
    }

    private static JPanel wrapPanel(JPanel oldPanel, float alignment) {
        JPanel panel = new JPanel();
        oldPanel.setAlignmentY(alignment);
        panel.add(oldPanel);
        return panel;
    }

    private static JPanel createPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.add(new JLabel("Hello world"));
        panel.add(new JTextField(10));
        panel.setBorder(new LineBorder(Color.red));
        return panel;
    }
}

我正在尝试创建一个包装方法,它使用JPanel并将其包装为给定的对齐方式。

编辑(从注释,用图像),我试图得到的输出如下,但代替按钮,我想有JPanel

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 03:41:07

您需要做的是将布局设置为BoxLayout,用于wrapPanel方法中的new JPanel

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JPanel panel = new JPanel();
BoxLayout layout = new BoxLayout(panel, BoxLayout.LINE_AXIS);
panel.setLayout(layout);

Bug:使用当前代码的似乎无法工作,因为它会扩展文本字段。如果您使用JButton代替JTextFeild,您将看到效果。我仍在试图弄清楚为什么文本字段会这样做。

更新以及上面的代码,以解决文本字段拉伸的问题,正如Camickr在this answer中所回答的那样

BoxLayout是少数尊重组件最小和最大大小的布局管理器之一。因此,如果要防止面板拉伸,可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
panel.setMaximumSize( panel.getPreferredSize() );

上面的代码就是您想要放在createPanel方法中的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

public class ValignJPanel {

    public static void main(String args[]) {
        JFrame frame = new JFrame("Vertical Alignment");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel1 = wrapPanel(createPanel(), Component.TOP_ALIGNMENT);
        JPanel panel2 = wrapPanel(createPanel(), Component.CENTER_ALIGNMENT);
        JPanel panel3 = wrapPanel(createPanel(), Component.BOTTOM_ALIGNMENT);

        frame.setLayout(new GridLayout(1, 3));
        frame.add(panel1);
        frame.add(panel2);
        frame.add(panel3);
        frame.setSize(400, 150);
        frame.setVisible(true);
    }

    private static JPanel wrapPanel(JPanel oldPanel, float alignment) {
        JPanel panel = new JPanel();
        BoxLayout layout = new BoxLayout(panel, BoxLayout.LINE_AXIS);
        panel.setLayout(layout);
        oldPanel.setAlignmentY(alignment);
        panel.add(oldPanel);
        return panel;
    }

    private static JPanel createPanel() {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.add(new JLabel("Hello world"));
        panel.add(new JTextField(10));
        panel.setBorder(new LineBorder(Color.red));
        panel.setMaximumSize( panel.getPreferredSize());
        return panel;
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22324552

复制
相关文章
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.1K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
12.7K0
RDP你的凭据不工作/RDP密码不刷新
128 天不上班不工作:照样领工资 9.5 万
原告:北京和风畅想科技有限公司 被告:杜某,男,1988年出生 和风畅想公司向法院提出诉讼请求: 1、判决无须撤销《解除劳动关系通知书》,双方无需继续履行劳动合同; 2、判决和风畅想公司无须向杜某支付自2020年2月29日至2020年7月5日期间工资收入损失95172.41元。 事实和理由: 2020年11月2日,和风畅想公司收到北京市朝阳区劳动人事争议仲裁委员会作出的京朝劳人仲字[2020]第16281号裁决书(以下简称“第16281号裁决书”),和风畅想公司不服该裁决。 不服裁决理由: 一、第1628
云头条
2022/10/09
2.2K0
128 天不上班不工作:照样领工资  9.5 万
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.1K0
mongo minio on openebs 工作量不饱满教程
作者 | 老根 - laf框架作者 笔者在开发laf(https://github.com/lafjs/laf)的过程中依赖了mongo minio这些组件,本文就如何对这些组件最佳实践来做个介绍。
sealyun
2022/05/16
3.8K0
mongo minio on openebs 工作量不饱满教程
为什么不建议你国庆前找工作
最近在面试过程中,以上内容就是简历的问题。打算换工作或正在找工作的朋友,可以参考一下。
李才哥
2019/09/25
3.9K0
C++都从事哪些工作能挣钱不?
java大行其道的今天我们来谈谈c++,现在学c++的人越来越少了。问题在哪?互联网盛行的年代,能吸引眼球的就是能赚钱的。所以一看招聘,发现做java开发是抢手货,起步价比c++高。 再则学习c++难度都比其它语言较高。而它的学习难度,太复杂性。现在c++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替c++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器,网络等。 一、游戏开发 游戏开发都有哪些,引擎开发(
程序员互动联盟
2018/03/15
2.8K0
C++都从事哪些工作能挣钱不?
远程桌面失败:你的凭据不工作
  然后按照以下操作,将默认设置“仅来宾—本地用户以来宾身份验证”,更改为“经典:本地用户以自己的身份验证”。
chenchenchen
2019/09/03
9.7K0
远程桌面失败:你的凭据不工作
4、Swing在JPanel中添加背景图片方法
该文介绍了在Java Swing GUI应用程序中,如何利用Swing组件在JPanel中添加背景图片,以使页面更加美观。主要包括背景图片的加载方式、设置背景图片以及JPanel的绘制方式。同时,提供了一个调用示例程序。"
YGingko
2017/12/28
4K0
JAVA学习Swing章节JPanel和JScrollPane面板的简单学习
本文主要介绍了Java Swing GUI编程中的JPanel和JScrollPane面板的应用,以及如何使用这些面板在Java中创建带有滚动条的文本编辑器。通过学习本文,读者可以掌握Java Swing GUI编程的基础知识,并能够使用这些基础知识在Java中创建各种GUI应用程序。
别先生
2017/12/29
2K0
JAVA学习Swing章节JPanel和JScrollPane面板的简单学习
一位可以不吃不喝不眠的腾讯安防工作者
2018年,我们在第四届腾讯数据中心分享日上,推出了“腾讯智维”。它将近20年数据中心运营经验与云化技术相结合,是一款腾讯自研的数据中心管理软件平台。腾讯强大的技术研发实力,安全保障能力,帮助客户持续提升数据中心运营的质量与效率,降低成本投入,将数据中心的价值极大化。 这一年来,腾讯智维伴随客户一起成长,我们对客户的需求也有了更深入更全面的了解,腾讯智维也在多方面进行着进化。为了更好地满足日益迫切的安全需求,腾讯数据中心联合安全平台部,紧密结合IDC机房的监控场景,共同打造出一套IDC机房智慧安防解决方案
腾讯数据中心
2019/06/26
2.9K0
一位可以不吃不喝不眠的腾讯安防工作者
为什么我不建议你通过 Python 去找工作?
这是读者“前进一点”在微信上问我的一个问题,我当时给他的回复是“Python 挺火的,学 Python 就好。”但当我在 B 站上看了羊哥的一期视频后,深感懊悔,觉得自己给出的建议是不负责任的。
黄啊码
2022/06/20
2.8K0
解决宝塔nginx防火墙启动后nginx不工作
一套流程下来,发现安装nginx防火墙之后nginx直接关停,无法启动,重载配置也无果。试着卸载防火墙并重启nginx成功。论坛上也没有具体解决方案,官方人员只是说规则配置问题,要去加他们技术。不得不说,还挺牛.
jcjyxjs
2021/09/04
2.9K0
python的dropna函数_Pandas dropna()函数不工作「建议收藏」
prison_data = pd.read_csv(‘https://andrewshinsuke.me/docs/compas-scores-two-years.csv’)
全栈程序员站长
2022/10/02
2.8K0
为什么我不建议你通过 Python 去找工作?
这是读者“前进一点”在微信上问我的一个问题,我当时给他的回复是“Python 挺火的,学 Python 就好。”但当我在 B 站上看了羊哥的一期视频后,深感懊悔,觉得自己给出的建议是不负责任的。
沉默王二
2020/05/26
2.7K0
解决宝塔nginx防火墙启动后nginx不工作
一套流程下来,发现安装nginx防火墙之后nginx直接关停,无法启动,重载配置也无果。试着卸载防火墙并重启nginx成功。论坛上也没有具体解决方案,官方人员只是说规则配置问题,要去加他们技术。不得不说,还挺牛.
jcjyxjs
2021/09/09
3.3K0
解决宝塔nginx防火墙启动后nginx不工作
springboot去掉spring-boot-starter-actuator依赖task任务不工作
springboot以其开箱即用,入门门槛低的特性越来越受开发者欢迎,使用过spring的人都知道spring的入门首先要解决的就是繁杂的配置,而springboot在这方面就做的很到位--快速上手!
johnhuster的分享
2022/03/28
3.7K0
您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/49077665
DannyHoo
2018/09/13
57.4K6
您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据。
点击加载更多

相似问题

JPanel绘图不工作

10

paintComponent on JPanel不工作

21

JScrollpane on JPanel不工作

11

JPanel paintComponent(…)不工作

24

JPanel KeyListener不工作

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文