小编Dav*_*amp的帖子

限制用户在JTextField中输入时间的最佳方法

在我的一个java应用程序中,有一个用户应输入时间的字段.我知道,我可以简单地将它保持为正常状态JTextField,在验证时我可以检查值等等......

但我认为有一种更好的方式..

例如,如果这是一个有日期的问题,那么JXDatePicker(随附swingx)可以非常方便地使用.最终,用户选择保证是日期.

同样,必须有更好的时间选择方式.如果您知道更好的解决方案,有人会分享您的知识.

任何想法都表示赞赏.谢谢!

java time swing date

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

setPreferredSize不起作用

码:

import java.awt.Dimension;

import javax.swing.*;

public class Game extends JFrame {
    private static final long serialVersionUID = -7919358146481096788L;
    JPanel a = new JPanel();
    public static void main(String[] args) {
        new Game();
    }
    private Game() {
        setTitle("Insert name of game here");
        setLocationRelativeTo(null);
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        a.setPreferredSize(new Dimension(600, 600));
        add(a);
        pack();
        setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我将首选大小设置JPanel为600乘600并打包帧,但帧的大小仍为0乘0.

为什么这样,我该如何解决?

java swing awt jpanel jframe

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

setDefaultLookAndFeelDecorated 影响 JFrame 调整大小行为

这是我的代码:

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class Test{


public static void main(String[] args){

    SwingUtilities.invokeLater(new Runnable(){

        @Override
        public void run() {

            JFrame.setDefaultLookAndFeelDecorated(true);

            JFrame frame = new JFrame();
            JPanel jp = new JPanel();

            jp.setMinimumSize(new Dimension(200, 200));
            jp.setPreferredSize(new Dimension(200, 200));

            //frame.getContentPane().setMinimumSize(new Dimension(200, 200));
            //frame.getContentPane().setPreferredSize(new Dimension(200, 200));

            frame.getContentPane().add(jp);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
    });
}
}
Run Code Online (Sandbox Code Playgroud)

它的行为完全符合我的要求。用户可以调整大小,JFrame但它总是足够大以容纳 200px x 200px JPanel。但是当我删除时:

JFrame.setDefaultLookAndFeelDecorated(true);

用户可以调整JFrame到任何大小。

为什么默认外观和感觉装饰会影响调整大小?我怎样才能让它工作没有setDefaultLookAndFeelDecorated(true)?我知道我可以手动设置帧最小尺寸 ( JFrame#setMinimumSize(new Dimension dim)),如果没有更智能的解决方案,我会这样做。

我在 Windows 7 上使用 jdk …

java swing resize jframe look-and-feel

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

JTextField在启动时没有出现在JPanel中

JTextField是因为当我将鼠标移动到它应该是鼠标图标变为光标的位置时,当我点击它时就显示出来了.但它在发布时是看不见的.我错过了什么?

public class JavaSwingTextfield extends JFrame {
    private static final long serialVersionUID = 1L;

    JTextField myTextField;

    public JavaSwingTextfield(){

        /***** JFrame setup *****/

        // Set the size of the window
        setSize(600,600);

        // Make the application close when the X is clicked on the window
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        // Makes the JFrame visible to the user
        setVisible(true);

        /***** JFrame setup END *****/


        /***** JButton setup *****/

        // Create a JLabel and set its label to "Start"
        myTextField = new JTextField("Start");

        // Set …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jtextfield layout-manager

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

将Jbutton添加到JTable

需要一个简单的Swing代码来演示如何使用tablecellrenderer和tablecelleditor在Jtable的列中添加一个按钮.

java swing jtable jbutton

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

带键键的线程

我是Java图形和线程的新手,我正在尝试制作游戏(特别是Pong).这个想法是两个人可以在同一个键盘上玩(即有两个通过不同键控制的拨片).目前,两名球员不能同时移动他们的球拍.

这个问题有方法解决吗?单独的线程是答案吗?

如果可能的话,我希望桨能够同时移动(至少看似).

更新:似乎使用Set<Integer>存储按键是最好的选择.我已经完成了(并且它可以工作),但我想知道是否有任何此代码不在事件调度线程(EDT)上,如果我需要使用SwingUtilities.invokeLater();.这是必要的代码:

private Set<Integer> keysDown = Collections.synchronizedSet(new HashSet<Integer>());

public void keyPressed(KeyEvent e) 
{
    keysDown.add(e.getKeyCode());
}

public void keyReleased(KeyEvent e) 
{    
    keysDown.remove(e.getKeyCode());
}

public void updatePaddlePositions()
{
    if (keysDown.contains(KeyEvent.VK_W)) 
        paddleOne.move(-PADDLE_MOVE_INCREMENT);

    if (keysDown.contains(KeyEvent.VK_S))
        paddleOne.move(PADDLE_MOVE_INCREMENT);

    if (keysDown.contains(KeyEvent.VK_UP))
        paddleTwo.move(-PADDLE_MOVE_INCREMENT);

    if (keysDown.contains(KeyEvent.VK_DOWN))
        paddleTwo.move(PADDLE_MOVE_INCREMENT);

    try {
        Thread.sleep(DELAY);
    } catch (InterruptedException e) {
        System.out.println("You Interrupted the game!");
    }

    canvas.repaint();
}
Run Code Online (Sandbox Code Playgroud)

这是对象的paintComponent方法canvas:

public void paintComponent(Graphics g) 
{
    super.paintComponent(g);
    paddleOne.paint(g);
    paddleTwo.paint(g);
    updatePaddlePositions(); // Does this need to be …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading key-bindings paintcomponent

5
推荐指数
2
解决办法
2570
查看次数

是否可以用Java创建程序来创建要在Chrome中链接的文本?

我为这个长期问题道歉.

前几天我正在浏览一个论坛,我看到了一些链接到youtube和其他网站的文本.我必须始终突出显示,然后复制并粘贴或右键单击谷歌浏览器中的"转到".

由于我一直在玩Java,我想到制作自己的小程序,它会给出一个带有地址的文本的链接.例如,如果我说"嘿,看看这个视频我前几天看到了'www.youtube.com'"我希望youtube部分可以点击.

任何人都可以告诉我,如果这样的事情是可能的,如果是的话,我必须使用哪些库,最后,如何在java中找到所有导入和库的列表?

谢谢.

java swing hyperlink

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

JProgressBar动态更改条形颜色

我正在使用JProgressBar组件以及Nimbus UI Defaults.问题是,当我想手动更改每个进度条的条形颜色时,我BasicProgressBarUI通过设置JProgressBar.setUI()功能来使用.这会带来更多麻烦,因为我想改变条形颜色,似乎我松开了jprogressbar的默认外观(Border,backgroundcolor dissappears).

所以我可以UIDefaults在代码初始化时设置Nimbus ProgressBar.有用.

但我想动态更改每个进度条的条形颜色.

有没有其他方法可以改变条形颜色JProgressBar

public class ProgressGenerator extends JFrame {

    protected int minValue = 0;
    protected int maxValue = 100;
    protected int counter = 0;
    protected JProgressBar progressBar;

    public ProgressGenerator() {
        super("JProgressBar Demo");
        setSize(300, 100);

        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (InstantiationException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            // …
Run Code Online (Sandbox Code Playgroud)

java swing jprogressbar nimbus uimanager

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

在构造函数外部使用.setVisible()会破坏我的GUI

我刚刚学习java GUI的基础知识.我有这种奇怪的情况,我无法解释.

我有一个GUI类,我在其中构建一个简单的JFrame.如果我.setVisible(true) 在构造函数中使用一切正常,如果我在外面使用它,没有任何加载(窗口是可见的,但按钮和什么不是).

为什么会这样?

public class GUI extends JFrame {


    private JTextField humanYears_TextField = new JTextField(3);
    private JTextField dogYears_TextField = new JTextField(3);
    private JButton convert_Button = new JButton("Convert");
    private JLabel greeting = new JLabel ("Dog years to Human years!");

    public GUI () {

        JFrame window = new JFrame();
        JPanel content = new JPanel();


        content.setLayout(new FlowLayout());
        content.add(this.greeting);
        content.add(new JLabel("Dog Years: "));
        content.add(this.dogYears_TextField);
        content.add(this.convert_Button);
        content.add(new JLabel("Human Years: "));
        content.add(this.humanYears_TextField);

        window.setContentPane(content);
        pack(); // aplica contentPane-ul
        window.setLocationRelativeTo(null); …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing multiple-instances jframe

5
推荐指数
2
解决办法
3534
查看次数

我应该将游戏循环放在 Swing 应用程序的什么位置?

我正在尝试用 Java 制作一个简单的 2D 游戏。
据我所知,我的游戏应该由两个线程组成:“事件调度线程”(用于 GUI 操作)和“游戏线程”(用于游戏循环)。
我创建了一个大纲,但找不到放置游戏循环的位置。
简而言之,我正在尝试在不冻结 UI 线程的情况下创建游戏循环。
如果您能提供有关我做错的事情的任何信息,我将不胜感激。
这是我的游戏循环(您也可以提供提示以创建更好的游戏循环):

while(true) {
    repaint();
    try {
        Thread.sleep(17);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

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

            }

        });
    }
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Forge …
Run Code Online (Sandbox Code Playgroud)

java swing timer game-loop paintcomponent

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