相关疑难解决方法(0)

多个JFrame的使用:好的还是坏的做法?

我正在开发一个显示图像的应用程序,并从数据库中播放声音.我正在尝试决定是否使用单独的JFrame从GUI向数据库添加图像.

我只是想知道使用多个JFrame窗口是否是一个好习惯?

java user-interface swing jframe

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

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

在Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

如何在运行Aero时确定ACTUAL窗体的大小(包含所有非客户端元素)?

我正试图将我的表单精确定位在任务栏上方.不幸的是,我的努力受到以下事实的阻碍:this.Height在我的表单上返回的值比实际表单小10个像素(包含所有边框,标题栏等).我正在使用Aero运行Windows 7.当Aero关闭(并且边框更薄)时,所有工作都按预期工作.表格边框样式是FixedSingle.我不想实现特定于Aero的黑客攻击.我该怎么做才能获得正确的身高?

.net size aero winforms

6
推荐指数
1
解决办法
1542
查看次数

Swing:为JDialog设置固定的窗口大小

我尝试了setPrefferedSize和setSize方法,但对话框仍以最小尺寸打开.

private void method() {
    commandDialog.setPreferredSize(new Dimension(100,100));
    - - - 
    - - -   //Components added to dialogPanel

    commandDialog.add(dialogPanel);

    // Tried this as well: commandDialog.setSize(40, 40);     
    commandDialog.validate();
    commandDialog.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

java layout swing jdialog preferredsize

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

Java/Swing如何处理不同的屏幕DPI和密度设置?

大家好,我最近遇到的问题是,现在有些显示器有不同的DPI设置,有些显示器更密集,例如Apple的Retina显示器.

如何用Java补偿各种监视器上的不同DPI设置和密度?是否可以在任何监视器上将控件缩放为相同的大小.我知道在为Android编程时,所有测量都在"DP"中,您可以为三种不同的显示密度指定不同的图像.

有没有办法可以使用Java/Swing为不同的显示密度选择不同的图像,这样我的应用程序在高密度显示器上看起来并不模糊?或者这不是那么重要或可能吗?我知道Chrome目前没有考虑DPI,但是Internet Explorer和其他应用程序也是如此.

谢谢你的帮助,我是Java开发人员,我以前从未考虑过DPI,并且想知道如何去做它:)

java swing dpi

5
推荐指数
1
解决办法
2872
查看次数

更改JSpinner尺寸(宽度)

我的问题:JSpinner非常瘦,我只能在最后一个位置看到字符串上的字符.

例如:"你好"我只看到'o'.

我在JFrame的BorderLayout.SOUTH中有一个JPanel

JPanel的布局管理器是默认的 - 如果我被误导,请纠正我 - 一个FlowLayout管理器.

前面提到的JPanel中还有多个组件.

我试过了

RandomSpinner = new JSpinner(tempModel);
int w = RandomSpinner.getWidth();   int h = RandomSpinner.getHeight();
RandomSpinner.setSize(new Dimension(w * 2, h));
add(RandomSpinner);
Run Code Online (Sandbox Code Playgroud)

这对JSpinner的宽度没有影响.

我应该如何更改JSpinner的宽度或者这是一个FlowLayout问题?

谢谢

java swing jspinner flowlayout

5
推荐指数
1
解决办法
6752
查看次数

JFrame固定宽度

是否可以为JFrame设置固定宽度?至少以下代码不起作用:

import java.awt.Dimension;
import java.awt.EventQueue;

import javax.swing.JFrame;

public final class Main  {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(500, 500);
                f.setMinimumSize(new Dimension(500, 0));
                f.setMaximumSize(new Dimension(500, Integer.MAX_VALUE));
                f.setVisible(true);
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

最小设置有效,但最大值不是.

java swing jframe

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

GUI测试应该以默认外观运行吗?

我正在开发一个具有自定义外观的应用程序.对于GUI测试,我使用的是FEST-Swing.目前,GUI测试使用默认的Java外观运行.因此,有些测试失败,但是我应该将其视为GUI中的错误,还是使用我的自定义外观进行测试?

稍后编辑:

谢谢Andrew Tompson的快速回答.但我认为这个问题仍然存在,因为流程布局的工作方式.这是一个发生了什么的模型:

在此输入图像描述

标准LAF使用比我使用的字体更大的字体,这导致其中一个按钮退出布局.我不能使用pack(),因为该容器有一个大小要求.如果您没有在该示例中调用frame.pack(),我认为您会遇到同样的问题.

java testing swing look-and-feel fest

4
推荐指数
1
解决办法
223
查看次数

GroupLayout在NetBeans中自动生成代码

在java编程工作了近4年之后,我决定学习如何自己编写GUI类,因为到目前为止我一直使用NetBeans GUI编辑器(我并不为此感到特别自豪,但它已经很好地避免了我对组件的担心布局).

问题是我正在关注如何使用GroupLayout教程来了解我觉得非常强大的布局管理器.现在我自己做了一个小例子,然后尝试在Netbeans GUI Editor中做同样的事情,我发现两个代码之间存在一些差异,我想知道我是否遗漏了某些内容,或者NetBeans只是在GroupLayout定义中添加了无用的代码.

这是我的目标:

在此输入图像描述

这是我的SSCCE:

public static void main(String[] args) {        
    JLabel label = new JLabel("This is a test");
    label.setFont(new Font("Segoe UI Semibold", Font.BOLD | Font.ITALIC, 24));

    JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);

    DefaultListModel model = new DefaultListModel();
    model.addElement("Apple");
    model.addElement("Orange");
    model.addElement("Kiwi");
    model.addElement("Watermelon");

    JList list = new JList(model);
    list.setPreferredSize(new Dimension(400, 300));
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setViewportView(list);

    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


    Container contentPane = frame.getContentPane();        
    GroupLayout layout = new GroupLayout(contentPane);
    layout.setAutoCreateContainerGaps(true);
    contentPane.setLayout(layout);

    layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING) …
Run Code Online (Sandbox Code Playgroud)

java swing netbeans grouplayout

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

为我的所有Jlabels JTextArea等设置通用字体大小

你好,我有一个奇怪的问题.

我想知道是否以及如何为我的Jlabels,TextAreas和基本上任何可以放在面板上的文本进行通用设置.我一直在每个标签上写字体大小以使其保持一致.然而,面板正在增长,我不想在每个标签上硬编码字体大小.

以下是我正在使用并希望在我的所有标签上使用的尺寸,以及textarea的尺寸.

titlelb.getFont().deriveFont( Font.BOLD, (float) 20.); 
lb1.getFont().deriveFont( Font.PLAIN, (float) 11.);
lb2.getFont().deriveFont( Font.BOLD, (float) 11.);
textArea.setFont( Font.decode( "Arial-PLAIN-11"));
Run Code Online (Sandbox Code Playgroud)

我只是想知道有没有办法将它设置为普遍的,每个Panel都会继承这些特定的尺寸,如果可能的话,我真的不知道如何去做标签的尺寸,这就是为什么我在这里问.先感谢您.

java fonts swing font-size jpanel

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