小编Rob*_*ume的帖子

如何让GridBagLayout尊重按钮或面板的最小尺寸?

在下面的GridBagLayout代码中,我希望在调整JFrame的大小以使其更小时,可以遵守JButton btn2的指定最小大小.但是当我使JFrame变小时,btn2会小于其最小尺寸然后消失.

有人能指出我正在做错的方向吗?也许我必须设置包含按钮的JPanel的最小大小?

任何帮助表示赞赏,谢谢!

    JFrame frame = new JFrame();
    frame.setSize(400,300);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setMinimumSize(new Dimension(400,300));
    panel.setBackground(Color.RED);

    panel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = null;

    JButton btn1 = new JButton("btn1");
    btn1.setPreferredSize(new Dimension(150,50));
    btn1.setMinimumSize(new Dimension(150,50));
    gbc = new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
            GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
            new Insets(0,0,0,0), 0, 0);
    panel.add(btn1, gbc);

    JButton btn2 = new JButton("btn2");
    btn2.setPreferredSize(new Dimension(150,150));
    btn2.setMinimumSize(new Dimension(150,150));
    gbc = new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0, 
            GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
            new Insets(0,0,100,100), 0, 0);
    panel.add(btn2, gbc);

    frame.getContentPane().add(panel);
    frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager gridbaglayout

11
推荐指数
2
解决办法
1万
查看次数

为什么这个简单的FOR LOOP在我的Linux bash中不起作用?

我正在尝试在UNIX脚本(bash)中执行一个简单的for循环.

这是我的脚本:

for i in {1..3}
do
   echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

我期待这个输出......

Welcome 1 times
Welcome 2 times
Welcome 3 times
Run Code Online (Sandbox Code Playgroud)

......但是我明白了......

Welcome {1..3} times
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

unix linux bash shell

11
推荐指数
1
解决办法
8251
查看次数

使用session.invalidate的JSF注销不会清除当前的用户名?

在我的JSF应用程序中,我得到了这样的当前登录用户的名字......

public String getLoggedInUsername() {
  return FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
}
Run Code Online (Sandbox Code Playgroud)

...我检查用户是否像这样登录...

public boolean isSignedIn() {
  return (getLoggedInUsername() != null);
}
Run Code Online (Sandbox Code Playgroud)

......当用户退出时,我这样做......

public String doLogout() {
  FacesContext facesContext = FacesContext.getCurrentInstance();
  HttpSession httpSession = (HttpSession)facesContext.getExternalContext().getSession(false);
  httpSession.invalidate();
  return "main";
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在doLogout()之后,getLoggedInUsername()仍然返回登录用户的名称.我应该做些什么来确保getRemoteUser()在注销后返回null?

或者,是否有更好的方法来获取isSignedIn()而不仅仅是检查用户名?

谢谢!抢

jsf httpsession

9
推荐指数
1
解决办法
3万
查看次数

在哪里可以找到适用于GlassFish 3.1.2的Eclipse JPA Facet的"用户库"?

我有Eclipse(Indigo)和GlassFish 3.1.2

"新JPA项目"向导出现错误"必须至少选择一个用户库".但是列表中没有任何内容.

GlassFish目录中是否已经有一个JPA实现,我应该创建一个指向它的用户库?或者我应该使用下载选项并从Web获取最新版本的Eclipse Link?

只是想知道让错误消失的"正确"方法是什么.

谢谢,罗布

eclipse jpa glassfish

9
推荐指数
2
解决办法
2万
查看次数

为什么MimetypesFileTypeMap总是为PNG文件返回"application/octet-stream"?

我正在尝试使用javax.activation.MimetypesFileTypeMap以获取内容类型.

对于字符串"image.png",它总是返回"application/octect-stream"...它不应该返回像"image/png"这样的东西吗?

javax.activation.MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType("image.png");
Run Code Online (Sandbox Code Playgroud)

java mime

9
推荐指数
1
解决办法
6679
查看次数

如何设置PrimeFaces主题?

我想让我的PrimeFaces(v2.1)应用程序使用不同的主题.

我下载了vader-1.0.0.jar并将其放在我的WEB-INF/lib文件夹中.

我在web.xml中添加了以下内容:

<context-param>   
  <param-name>primefaces.THEME</param-name>
  <param-value>vader</param-value> 
</context-param>
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,主题不会改变.

还有什么我想念的吗?

jsf primefaces

8
推荐指数
3
解决办法
6万
查看次数

如果没有指定值,是否应该跳过验证?

我在GlassFish 3上使用JSF2.

我有一个接受和可选电话号码的表格.我有这个自定义电话号码验证器(下面),我将字段设置为required ="false",因为电话号码在表单中是可选的.

问题是,该字段中的值始终得到验证.如果没有指定值,是否应该跳过验证?

肯定有一些我做错了.任何帮助表示赞赏,谢谢!

<h:outputText value="#{msg.profile_otherPhone1Label}#{msg.colon}" />
  <h:panelGroup>
    <p:inputText label="#{msg.profile_otherPhone1Label}" id="otherPhone1" value="#{profileHandler.profileBean.otherPhone1}" required="false">
      <f:validator validatorId="phoneValidator" />
    </p:inputText>
  <p:spacer width="12"/>
  <h:outputText value="#{msg.profile_phoneExample}" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

#

public class PhoneValidator implements Validator {

    @Override
    public void validate(FacesContext facesContext, UIComponent uIComponent,
            Object object) throws ValidatorException {

        String phone = (String) object;

        // count the digits; must have at least 9 digits to be a valid phone number
        // note: we're not enforcing the format because there can be a lot of variation …
Run Code Online (Sandbox Code Playgroud)

validation jsf jsf-2

8
推荐指数
1
解决办法
6018
查看次数

如何在WebSphere 7中设置log4j.configuration系统变量?

我有一个Java EE 5 Web应用程序,我将其作为EAR文件部署到WebSphere 7.

我希望我的log4j配置在EAR文件的外部,这样我就可以在需要时调整日志内容,而无需重建和重新部署EAR文件.

我的理解是我可以通过设置一个名为log4j.configuration的"系统变量"来指定我的log4j.properties文件的位置.(例如log4j.configuration = c:/log4j.properties)

我的问题是,如何在WebSphere 7管理控制台中设置此系统变量?

浏览我看到有Environment > WebSphere Variables,但这看起来不正确,因为这将为整个服务器设置一个变量.我猜我想为我的应用程序EAR文件设置一个系统变量.

非常感谢任何帮助或建议!

ear websphere log4j

8
推荐指数
1
解决办法
2万
查看次数

JSF:如何在验证消息中不显示元素id?

我有一个简单的JSF表单,对输入文本进行了一些验证.就像是:

<h:inputText id="firstName" value="#{userHandler.user.firstName} required="true" />
<h:message for="firstName" />
Run Code Online (Sandbox Code Playgroud)

工作良好.除了错误消息如下所示:

"j_id786643870_20c27c0a:firstName:验证错误:值是必需的."

如何告诉JSF不要显示元素的元素id并只显示文本消息?

也就是说,我只想说:

"验证错误:需要值."

jsf

7
推荐指数
1
解决办法
4485
查看次数

p:commandLink不会重定向到新页面?

我正在使用JSF2和GlassFish,PrimeFaces 2.1.

这样工作,showCreateProfile()方法被命中,方法返回"profileForm",浏览器重定向到该页面:

<h:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" />
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,showCreateProfile()方法获取命中,并且方法返回"profileForm"但浏览器不会重定向到页面.我尝试了三件不同的事情,没有运气:

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" />

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" />

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" immediate="true"/>
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

jsf glassfish primefaces

7
推荐指数
1
解决办法
3万
查看次数