相关疑难解决方法(0)

想要一种像素编辑器的网格类型

我目前正在尝试开发一个基本的像素编辑器应用程序,以建立我的Java编程经验.我正在设计它,所以用户有几个颜色选项,他们点击一个选项,然后他们可以拖动网格中的单元格,他们改变颜色(像一个典型的图像编辑器,但有一种卡扣到每个网格细胞)

知道Java组件(如果有的话)能够在Java中实现这种类型的网格吗?

我曾经想过每个单元都是一个JButton,但这看起来效率非常低,而且我不认为可以通过单独点击每个单元来改变每个单元格(按钮)的颜色.

任何帮助赞赏.

java mouse grid

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

setSize不影响按钮的大小

我有一个示例代码:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;

public class AWT extends JFrame {

    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setPreferredSize(new Dimension(600, 450));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBackground(Color.green.darker());

        Button btn_1 = new Button("Button 1");
        btn_1.setBackground(Color.green.darker());
        btn_1.setSize(40, 100);
        Button btn_2 = new Button("Button 2");
        btn_2.setBackground(Color.green.darker());
        btn_2.setSize(40, 100);
        Button btn_3 = new Button("Button 3");
        btn_3.setBackground(Color.green.darker());
        btn_3.setSize(40, 100);

        JPanel players = new JPanel(new GridLayout(1, 3));
        players.add(btn_1);
        players.add(btn_2);
        players.add(btn_3);
        players.setBackground(Color.green.darker());
        players.setPreferredSize(new Dimension(450, 80));

        JPanel game = new JPanel();
        game.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
        game.setBackground(Color.green);
        game.setPreferredSize(new Dimension(600, …
Run Code Online (Sandbox Code Playgroud)

java size swing awt

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

在Java中调整大小时,绘制的内容不可见

请注意我还没有在Mac机器上的Windows机器上测试过这个.我不太确定这是否也出现在Windows机器上......

当我调整Java应用程序的大小时,内容是不可见的.我已经找到一种方法来解决它调整其大小,但不能同时在用户调整窗口的大小.

我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来).

结构是这样的:

  • Frame 我的主窗口
    • Container内容视图main-window
      • Container基于paint(Graphics g)-method 的子视图

我已经添加了所有监听器My main-window,现在我可以调整窗口大小重绘Content-view .

public void componentResized(ComponentEvent e) {
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

我谨慎使用paint(getGraphics())-method并不是一个非常好的方法,但是因为repaint()-method根本没有做任何事情,所以它是唯一可行的方法.

调整大小时,所有绘制的内容都变得不可见.但是,当我向我添加Button-instance Content-view并调整我Main-window的大小时,该按钮不会被隐藏.

能够追踪"live'调整大小事件:

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
}
Run Code Online (Sandbox Code Playgroud)
  1. 当我开始调整大小时,不会调用此方法.
  2. 调整大小时,在我的日志中生成"实时调整大小"每个像素我调整窗口大小.
  3. 当我停止调整大小时,没有调用此方法,componentResized-method会这样做.

当我将repaint-method(或官方重绘方法)添加到像这样的'live'-resize事件时,我仍然得到输出,但是,它没有重新绘制或者某些东西

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

要么

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.repaint();
} …
Run Code Online (Sandbox Code Playgroud)

java graphics resize window minimize

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

Java - JFrame、JPanel、布局和剪裁

我有三个问题/问题。(注意 - 我没有足够的声誉来发布图片,所以我链接了它们。我需要混淆它们......)

1) 我创建了一个面板来保存我的游戏图形(玩家区域)。该面板应该是 800x800 并剪辑位于下方和右侧的所有内容。但是当我将图形面板添加到 JFrame 时,它​​不会剪辑。所以图像在右侧和左侧移动。这是游戏开始的图片。理想情况下,图形将始终从这个矩形开始:

图片#1:http : //i.stack.imgur.com/idL8f.png

现在,当我按下播放开始时会发生什么。

图片#2:http : //i.stack.imgur.com/dxtbe.png

如何设置面板/框架,以便图形仅占用 800x800(如第一张图片)而其他所有内容都被剪裁?

2) 我对如何设置 JFrame 有点困惑。这是我希望它的布局方式:

图片#3:http : //i.stack.imgur.com/ZyJS5.png

你会如何布置 JFrame/Panels?我在考虑 BorderLayout,但我不确定它是否会奏效。

3) 对于这个游戏,我扩展 JFrame 的类也包含 main()。这是不好的做法吗?** 你不应该在主类上扩展 JFrame 吗?

java layout swing jpanel jframe

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

仅在必要时在FlowLayout中显示ScrollBars

我会改写我的问题:**

如果有足够的空间通过变形来显示所有项目,如何防止在FlowLayout中启用Java ScrollBar.

例**

这是我想要实现的截图:

请注意,在不需要时禁用滚动条. 在此输入图像描述

当您调整窗口大小时,如果某些项目在视图平面外,则应显示滚动条 在此输入图像描述

PS我知道称为文档和Web的东西.

java user-interface swing

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

如何重新计算JComponent的首选大小?

我知道当我创建一个JComponent的实例时,它有自己的首选大小.现在让我们假设我setPreferredSize手动JComponent的维度为0 x 0.我希望该组件"重置"自己的preferredSize.我怎么做?

java swing jcomponent

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

如何在JScrollPane中获取水平滚动条

我有一个面板布局问题,我似乎无法解决.我有以下代码:

public class Test extends ApplicationFrame {
    public Test(String title) {
        super(title);

        JPanel jpanel = new JPanel();
        jpanel.setPreferredSize(new Dimension(100 * 2, 300));
        jpanel.setBackground(new Color(0xFF0000));

        JScrollPane scrollPane = new JScrollPane(jpanel);
        scrollPane.setBackground(new Color(0xFF0000));
        scrollPane.getViewport().setPreferredSize(new Dimension(100 * 2, 300));

        this.add(scrollPane, BorderLayout.WEST);
        this.setPreferredSize(new Dimension(500, 500));
    }

    public static void main(String args[]) {
        Test test = new Test("Layout Test");
        test.pack();
        RefineryUtilities.centerFrameOnScreen(test);
        test.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

创建以下布局:

在此输入图像描述

当我拖动窗口的右侧并将其移动到红色JPanelJScrollPane,我想水平滚动条出现在JScrollPane.但是目前窗口只是收缩而没有显示水平滚动条.这可能吗?

我想保留,BorderLayout.WEST因为我的用例就是当我没有足够大的图表来填充整个窗口时保持JFreeChart不会拉伸.

java swing jfreechart jpanel jscrollpane

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

JComboBox无法在JTable TableHeader中扩展

我已经阅读了大多数JTable/JComboBox对此类其他问题的回复,但还没有找到解决我问题的方法.

我创建了一个具有JComboBox TableHeader元素的表.没有任何JComboBox元素将打开以显示项目列表.如何获取要显示的各个JComboBox元素的项目列表?

请注意,此问题的一个显着特征是JComboBox位于TableHeader中,未嵌入JTable单元中.

任何帮助表示赞赏.

SSCE

import java.awt.Component;
import java.awt.Dimension;
import java.util.Enumeration;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

public class ComboHeaderTest extends JScrollPane {

private static final Dimension DEFAULT_SIZE = new Dimension(200, 200);

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            new ComboHeaderTest().initComponents();
        }
    });
}

private ComboHeaderTest() {

    final String[][] data = { {"Header 1", "Header 2", "Header 3"},
                                {"A", "B", "C"},
                                {"D", …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jcombobox jtableheader

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

如何将控制台应用程序转换为Swing应用程序

作为Java初学者,我希望获得一些帮助,以了解为控制台应用程序构建摆动UI的最佳方法或技术。

现在,控制台应用程序运行良好,我想将其转换为swing应用程序。我想在JScrollPane中有一个JTextArea,用户可以对其进行编辑以输入其字符串,然后单击一个countwords按钮并以int格式获取输出。

下面是我的控制台应用程序以及我尝试使用swing应用程序的代码。我花了很多时间尝试对此进行研究,但是我似乎无法正确地做到这一点。

我的控制台应用程序:

 import java.util.*;
 public class WordCounter{

 public static void main(String args[])
    {
     // Create Scanner object
     Scanner s=new Scanner(System.in);

    // Read a string
     String st=s.nextLine();

     //Split string with space
     String words[]=st.trim().split(" ");

     System.out.println("No. of words "+words.length);
    }
  }
Run Code Online (Sandbox Code Playgroud)

我对Swing的尝试:

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JTextArea;

import java.util.*;

class Countswords extends JPanel {

    public Countswords() {
        myTextArea();

    }

    private void myTextArea() {
        this.setLayout(new BorderLayout());
        this.setPreferredSize(new Dimension(400, 200));

        JTextArea textArea = new JTextArea(5, 40);
        JScrollPane …
Run Code Online (Sandbox Code Playgroud)

java swing

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

迁移到java 8时的Swing布局问题

我在java 5中的swing应用程序有一个像

这个

迁移到java 8后,放大并仅显示其中的一部分 这个

我看到了这个,并尝试将J2D_D3D设置为环境变量,并尝试将其作为vm参数传递.但没有解决问题.知道这可能是什么?

java swing rendering java-8

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