小编mre*_*mre的帖子

关于Swing组件扩展的经验法则是什么?

将类专用于特定的Swing组件时,extend对该特定组件更好,还是在内部构造并提供引用?

public class Foo extends JComponent{

}
Run Code Online (Sandbox Code Playgroud)

要么

public class Foo{
    public JComponent getComponent(){
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

这就是我所说的奉献精神

public class Foo{
    private static Foo INSTANCE;

    public static Foo getInstance(){
        if(INSTANCE == null){
            INSTANCE = new Foo();
        }
    }

    public void createAndShowComponent(){
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

在里面createAndShowComponent(),我创建了一个JComponent包含所有组件及其各自的侦听器,而不暴露我刚创建的组件的内部.

java swing jcomponent extend

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

这是一个匿名内部类的变体吗?

这是一个例子

JPanel panel = new JPanel(){
    @Override
    protected void paintComponent(Graphics g){
        // do stuff
    }

    @Override
    public Dimension getPreferredSize(){
        // do stuff
    }
};
Run Code Online (Sandbox Code Playgroud)

这只是一个匿名内部类的变体,还是完全不同的东西?

java anonymous-class

3
推荐指数
2
解决办法
392
查看次数

如何更改JFileChooser中的默认java图标

我想从中更改内置的java图标JFileChooser.JFrameclass有一个setIconImage()set icon的设置方法.但我找不到类似的东西JFileChooser.在不更换咖啡杯的情况下,任何人都可以轻松识别我的软件是用java制作的.任何人都可以帮我避免这个吗?

java icons swing jfilechooser

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

如何在JButton图标上方和下方设置文本?

我想设置文本上方和下方一个JButton的图标.目前,为了实现这一点,我覆盖了布局管理器并使用了三个JLabel实例(即2个用于文本,1个用于图标).但这似乎是一个肮脏的解决方案.

有更直接的方法吗?

注意 -
我不是在寻找多线解决方案,我正在寻找一种多标签解决方案.虽然条是指它作为一个多行的解决方案,它实际上似乎是指一个多标签解决方案.


import java.awt.Component;
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public final class JButtonDemo {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }


    private static void createAndShowGUI(){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add(new JMultiLabelButton());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton

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

如何迭代SortedSet来修改其中的项目

我想说我有一个List.在for循环中修改list的项目没有问题:

for (int i = 0; i < list.size(); i++) { list.get(i).setId(i); }
Run Code Online (Sandbox Code Playgroud)

但是我有一个SortedSet而不是list.我怎么能用它呢?谢谢

java iterator sortedset

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

"这个"参考在施工过程中逃脱了吗?

如果我这样做,

final class FooButton extends JButton{
    FooButton(){
        super("Foo");
        addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e){
                // do stuff
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我让this引用隐含地逃脱了吗?

java constructor

3
推荐指数
2
解决办法
862
查看次数

调用validate后,Container不会自行调整大小

通过add和手动交换组件后remove,我调用validate()容器.根据文件,

validate方法用于使容器再次布置其子组件.在显示容器后修改此容器的子组件(添加到容器中或从容器中删除,或更改布局相关信息)时,应调用它.

短语" 再次布置其子组件 "让我觉得容器会相应调整大小,但事实并非如此.相反,在调用之后validate(),我还需要调用pack()以查看其所有子组件.

为什么是这样?难道我做错了什么?

java swing containers resize

3
推荐指数
2
解决办法
3810
查看次数

关于"for"语句中迭代器对象的问题

我试图理解一个java程序,它有一个代码段,如

for (final Document document : cluster.getDocuments())  {  
    if (documentsShown >= maxNumberOfDocumentsToShow)  {  
        break;  
    }  
    displayDocument(level + 1, document);  
    documentsShown++;  
}  
Run Code Online (Sandbox Code Playgroud)

这是否意味着cluster.getDocuments()必须是迭代器对象?

java

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

为多个JLabel分配边框

我有10个JLabels我想拥有相同的边框.这是一个可以手工管理的数字,但作为一个程序员,我想知道是否有办法让这更容易.

我尝试过为每个循环实现标签所在面板的所有组件,然后使用该方法setBorder(...).但这显然不起作用,因为对象被识别为组件而不是JLabel.

如何自动将边界分配到JLabel

java swing border jlabel

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

如何在没有输出参数的情况下从存储过程返回值

这是我目前使用的存储过程的伪代码,

CREATE PROC uspFoo
(
@id int,
@type nvarchar(255),
@status bit output
)
AS
IF ....
SET @status=1
ELSE
SET @status=0
GO
Run Code Online (Sandbox Code Playgroud)

执行此存储过程时,我被迫传递一个输出参数,该参数将存储其返回值,

DECLARE @id int, @type nvarchar(255), @status bit
SET @id=..
SET @type=..
EXEC uspFoo @id, @assayType, @status output

PRINT @status

GO
Run Code Online (Sandbox Code Playgroud)

返回值,或者在这种情况下status,将为0(假)或1(真).

如何bit直接返回值(例如)而不必将其存储在临时输出参数中?

sql stored-procedures return-value sql-server-2008-r2

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