小编mre*_*mre的帖子

在Netbeans中获取JFrame边界的问题

我想在我的程序中按下按钮时,将JFrame动画化为半角.我认为最简单的方法是将JFrame的当前边界放入计时器,并在计时器运行时将边界减1,但是当我在netbeans IDE中声明一个新的计时器时,它看起来像这样.

      Timer t = new Timer(5,new ActionListener() {

        public void actionPerformed(ActionEvent e) {

          //inside this I want to get my Jframe's bounds like this
           //    int width = this.getWidth();---------here,"this" means the Jframe

           }

        }
    });
Run Code Online (Sandbox Code Playgroud)

但问题是在这里"这个"并没有引用JFrame.And我甚至无法创建我的JFrame的新对象.因为它会给我另一个窗口.任何人都可以帮我解决这个问题吗?

java swing timer jframe bounds

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

是否可以使用nimbus laf更改jspinner的背景?

我相信我在向你寻求帮助之前已完成了我的研究,但我可能忽略了一些东西.

我正在使用Nimbus laf编写一个java UI.我希望在状态改变时更改JSpinner的背景颜色,即,当按下向上或向下按钮时,jspinner中文本字段的背景颜色会改变颜色以表示该值已被更改.

我知道这可以使用OTHER lookandfeels但使用Nimbus不那么容易,例如: ((JSpinner.NumberEditor)jSpinner1.getEditor()).getTextField().setBackground(color.yellow);

我还研究过实际更改UI管理器的颜色主题,但我只想在操作发生时更改颜色,而不是仅在默认情况下改变整体颜色. 在这里这里

这有可能吗?我从哪里开始?

如果做不到这一点,我希望只是改变一个按钮的颜色: jButton.setBackground(Color.yellow);

这很容易,但由于默认颜色是绘制的渐变,我该如何将其更改为?

真的希望那里的人知道或可以提供帮助.

非常感谢提前!

java swing background-color jspinner nimbus

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

如何将[简体]中文字符打印到Eclipse控制台?

我有以下代码:

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Locale;

public final class ChineseCharacterDemo {

    public static void main(String[] args) throws UnsupportedEncodingException {
        Locale locale = new Locale("zh", "CN");
        System.out.println(locale.getDisplayLanguage(Locale.SIMPLIFIED_CHINESE));
    }

}
Run Code Online (Sandbox Code Playgroud)

甚至在将Eclipse控制台的字符编码设置为UTF-8后,我得到的是框,而不是以下内容:

??
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


编辑-

将Eclipse控制台字体更改为能够呈现中文字符的内容后,我得到以下不正确的显示:

在此输入图像描述

但是,当我在这里复制/粘贴文本时,它会正确呈现简体中文文本.再一次,这里发生了什么?实际上,如果你在控制台中查看渲染文本,它是正确的字符,但它们就在他们身边!


解析度-

所以,事实证明我需要做以下事情:

  1. 将Eclipse控制台的字符编码更改为UTF-8
  2. 将字体更改为Arial Unicode MS(即任何能够呈现中文文本的字体)

java eclipse character-encoding cjk

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

为什么Graphics的draw方法不尊重笔画属性?

我想创建一个带圆角的自定义边框.

代码 -

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.RenderingHints;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.border.AbstractBorder;

class JRoundedCornerBorder extends AbstractBorder 
{   
    private static final long serialVersionUID = 7644739936531926341L;
    private static final int THICKNESS = 5;

    JRoundedCornerBorder()
    {
        super();
    }

    @Override
    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) 
    {
        Graphics2D g2 = (Graphics2D)g.create();

        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        if(c.hasFocus())
        {
            g2.setColor(Color.BLUE);
        }
        else
        {
            g2.setColor(Color.BLACK);
        } …
Run Code Online (Sandbox Code Playgroud)

java graphics swing java-2d stroke

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

取消装箱空盒装对象会引发意外的NullPointerException

如果您运行以下代码,

public class Foo{
    public static void main(String[] args){
        int id = new Bar().getId(); // throws unexpected NullPointerException
    }

    private static class Bar{
        private final Integer id;

        public Bar(){
            this(null);
        }

        public Bar(Integer id){
            this.id = id;
        }

        public Integer getId(){
            return id;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您将获得以下堆栈跟踪,

Exception in thread "main" java.lang.NullPointerException
    at Foo.main(Foo.java:3)
Run Code Online (Sandbox Code Playgroud)

为什么没有编译器警告或任何东西?恕我直言,这是一个非常讨厌的微妙与拆箱,或者也许我只是天真.


添加@Javier提供的答案,如果您使用的是Eclipse,则需要执行以下操作来启用此功能:

  1. 导航到Window> Preferences> Java> Compiler>Errors/Warnings
  2. 展开潜在的编程问题
  3. Boxing和拆箱转换切换为"警告"或"错误"
  4. 点按"确定"

java eclipse unboxing nullpointerexception

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

在keypress上删除JList项目的例外情况

我在JList中遇到NullPointerException,但异常的来源似乎是Swing事件处理代码.JList有一个键监听器,当按下Delete键时,它将删除所选项.仅在列表中的第二个和所有后续删除上抛出异常.关于如何修复它的任何想法?

重现问题的示例代码和生成的异常包括在下面:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JList;

public class Sample {

    public static void main(String[] args) {
        final JFrame frame = new JFrame();

        final Vector<String> list = new Vector<String>();
        for (int i = 0; i < 5; ++i) {
            list.add("String " + i);
        }

        final JList listView = new JList(list);

        listView.addKeyListener(new KeyListener() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                    list.remove(listView.getSelectedIndex());
                    listView.updateUI();
                }
            }

            @Override
            public void keyReleased(KeyEvent e) { } …
Run Code Online (Sandbox Code Playgroud)

java swing jlist

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

JTextField - setColumns()方法对我不起作用

我的问题是我的JTextField -setColumns(int)

"field1.setColumns(5);"

......不起作用.我猜它是一个布局管理器问题.但是,我正在练习练习册.我所知道的唯一布局是flowLayout,borderLayout和gridlayout.

简而言之,只要"field2"触发ActionEvent(通过按回车键),"field1"就应该改变大小.

我在"actionPerformed"中放置了一个"System.out.println("ActionEvent detect")来证明一个actionevent正在被触发,所以这不是问题.我甚至打印了"field1.getColumn"并且它显示正确的更改值5,但是...它不仅不会在运行时明显改变大小.

我不希望有人能够解释这个问题.解决这个问题不会帮助我学习,这是解决这些书籍练习的全部目的.

重要的是,我在netbeans编码.在此先感谢您的帮助.

public class Exercise13_11 extends JFrame implements ActionListener
{
    private JTextField textField1, textField2;
    private JLabel label1, label2;
    private JRadioButton rButton1, rButton2, rButton3;

    public static void main(String[] args)
    {
        JFrame frame = new Exercise13_11();
        frame.setTitle("Exercise 13.11");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(450, 200);
        frame.setVisible(true);
    }

public Exercise13_11()
{
    // North Panel aligned and filled.
    JPanel northPanel = new JPanel();
    northPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
    northPanel.add(label1 = new JLabel("Text Field"));
    northPanel.add(textField1 = new JTextField(20));
    northPanel.setToolTipText("Demonstrate JTextField");
    getContentPane().add(northPanel, BorderLayout.CENTER);

    // South panel …
Run Code Online (Sandbox Code Playgroud)

java swing jtextfield

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

来自JOptionPane的多个选择

我有一个带有物体的arraylist和一个正在运行的Gui.我正在寻找一种方法来弹出一个小框架或框或类似于显示arraylist中的对象的方法.用户现在应该能够选择一个或多个随后返回的项目.

我已经有了optionpane,但我可以选择一个对象

    Object[] possibilities = lr.declarationList.toArray();
    String s = (String)JOptionPane.showInputDialog(
                        gui.getFrame(),
                        "Choose Target Nodes",
                        "Customized Dialog",
                        JOptionPane.PLAIN_MESSAGE,
                        null,
                        possibilities,
                        null);
Run Code Online (Sandbox Code Playgroud)

也许一个弹出列表会有所帮助.

java user-interface swing joptionpane

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

如何在java swing中使用文本字段的过滤器?

我有一个JTextField.当用户输入a或者j,我希望文本字段中的文本是大写的(例如输入"ab",输出"AB").如果第一个字母不是以下之一,

  • a,t,j,q,k,2,3,...,9

我不希望文本字段显示任何内容.

而这就是我所拥有的,

public class Gui {
    JTextField tf;
    public Gui(){
        tf = new JTextField();
        tf.addKeyListener(new KeyListener(){
           public void keyTyped(KeyEvent e) {
           }
           /** Handle the key-pressed event from the text field. */
           public void keyPressed(KeyEvent e) {
           }
           /** Handle the key-released event from the text field. */
           public void keyReleased(KeyEvent e) {
           }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing keylistener jtextfield

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

GridLayout不遵守每列我想要的行数

我有以下,

GridLayout layout = new GridLayout(4, 0);
Run Code Online (Sandbox Code Playgroud)

如果我有5项目,这将创建2列,其中第一个包含3行,第二个包含2行.这不是我想要的,也不是我所期望的.我希望第一列包含4行,第二列包含1行.

为什么这个布局管理器不符合每列我想要的行数?或者更好的是,我如何让这个布局经理尊重这个?

java swing awt layout-manager grid-layout

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