标签: jcomponent

Java swing JComponent"size"

我正在做一个我需要一些自定义摆动组件的项目.到目前为止,我已经制作了一个带有一系列图像的新按钮(Java Metal外观根本不适合我的UI).我已经MouseListener在这个新组件上实现了,这就是我的问题出现的地方.我的小部件在悬停时更改图像,单击等,除了我MouseListener将鼠标进入整个GridLayout容器而不是图像中.所以我有一个大约200*100的图像,周围的容器大约是400*200,mouseEntered当它进入那个GridLayout部分(甚至是它的空白部分)而不是在图像上方时会触发该方法.我怎样才能使它只在我将鼠标悬停在图像上时触发?我试过设置大小和边界和其他属性无济于事.

编辑:这是我的问题的演示.正如您所看到的(有些颜色非常相似),右下角按钮只需输入其中的部分即可突出显示GridlLayout.我只想在实际拍摄图像时突出显示,而不是GridLayout部分.

替代文字

我不会添加MouseListener方法,因为它们只涉及切换显示的图像.

public customWidget()
{
    this.setLayout(new FlowLayout());
    try {
        imageDef=ImageIO.read(new File("/home/x101/Desktop/buttonDef.png"));
        imageClick=ImageIO.read(new File("/home/x101/Desktop/buttonClick.png"));
        imageHover=ImageIO.read(new File("/home/x101/Desktop/buttonHover.png"));
        current=imageDef;
    } catch (IOException e) 
    {

        e.printStackTrace();
    }
    this.addMouseListener(this);
}

protected void paintComponent(Graphics g)
{
    super.paintComponents(g);
    g.drawImage(current, 0, 0, current.getWidth(), current.getHeight(), null);

}
Run Code Online (Sandbox Code Playgroud)

编辑:添加代码部分

java user-interface swing jcomponent mouselistener

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

是否有可能有多个JOptionPane对话框?

有谁知道我们如何在另一个JOptionPane对话框上面有一个JOptionPane对话框?

java swing multithreading jcomponent joptionpane

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

Java-可重用按钮动作处理程序概念问题

首先-很抱歉,没有代码太可怕,只是我要解释的框架。它运行没有错误。

目标

我正在为GUI创建可重用的按钮类,并且每个按钮对象在单击时都需要具有不同的处理程序。我想为ClickHandler每个新按钮分配一个对象。然后,该按钮将调用init()处理程序,并继续执行。不幸的是,这存在输入问题,因为每个处理程序类都有不同的名称。

目前的进展

现在,该处理程序的类型为HandlerA,但我希望它处理任何名称,例如“ SettingsHandler”或“ GoToTheWahWah”等。

我尝试过弄乱泛型,但是由于我是新手,从Webdev的背景开始,我似乎一直在克服概念上的障碍。这是解决问题的正确方法吗?

代码

ReuseableButton.java 是可重用的类,唯一改变的是单击时的操作:

package gui;

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

public class ReuseableButton extends JButton implements ActionListener {
  private static final long serialVersionUID = 1L;

  // I want a generic type here, not just HandlerA!
  private HandlerA ClickHandler;

  // Assemble generic button
  public ReuseableButton(Container c, String s) {
    super(s);
    addActionListener(this);
    c.add(this);
  }

  // Once again, generic type, not just HandlerA!
  public void SetClickHandler(HandlerA ch) { …
Run Code Online (Sandbox Code Playgroud)

java swing jcomponent extend jbutton

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

有关摇摆组件的信息(java)

在学习python(cpython)并使用此页面搜索tkinter 小部件的选项,方法和模式之后,我开始在jython中开发,因为来自java的javax.swing模块可以帮助我创建独立于平台的GUI.

我的问题是:是否有一个像我上面提到的那个页面,它提出了摆动对象的选项和方法?

java user-interface swing jython jcomponent

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

java - jcomponents如何绘制?

我想知道如何在屏幕上绘制jcomponent,它是否在Graphics的paintComponent()中绘制?或者它是单独绘制的.我问这个是因为jbutton在mousehover上改变颜色很奇怪,即使从不调用repaint()也是如此.

谢谢你的时间.

java swing jcomponent repaint

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

具有可选行的JTextArea

我正在创建一个应用程序,我需要一个看起来像JTextArea的JComponent,我可以在其中选择单个行.

我知道我可以通过使用JTextArea来自己管理它,但是可能有更好的方法来完成我想要做的事情.问题是我不知道在Google上搜索什么,因为我不知道如何调用这样的组件.

这是一张显示我想要的图片: 我想要的例子

突出显示"ADMIN"的部分正是我正在寻找的部分.由此,我将在程序的其他部分填写一些信息,因此我需要能够知道所选的内容.

java swing jcomponent jtextarea

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

如何在JComponent中绘制JComponent?

我对JComponent有一个奇怪的问题。我正在尝试创建自己的JComponent,因此需要将JComponents组合在一起。

我想在我的JComponent JDial中绘制JButton:

public class JDial extends JComponent {
    private static final long serialVersionUID = 3364481508702147328L;

    public JDial() {        
        JButton b = new JButton("test");
        this.add(b);
    }
}   
Run Code Online (Sandbox Code Playgroud)

但这只是一无所有。更加有趣的是,这一方法效果很好:

public class JDial extends JPanel {
    private static final long serialVersionUID = 3364481508702147328L;

    public JDial() {        
        JButton b = new JButton("test");
        this.add(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

JPanel继承自JComponent并在其中绘制JButton。JPanel如何做到这一点?

提前致谢

java swing jcomponent jpanel jbutton

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

如何在JPanel中为长JComponents添加滚动条?如何使JComponent居中?

目前,我必须将JComponents包含在具有垂直框布局的JPanel中.这样,我可以让第一个组件居中,如下所示,并在下面有底部组件(很长).但是,由于底部组件非常长,我想为该特定组件添加一个滑块.这样,用户可以看到所有底部组件,其中上部组件保持居中.但是,我的下面的代码没有修复任何东西,滚动条甚至不起作用.您需要知道的有关GPComponent和GPinfinity的唯一信息是它们覆盖preferredSize,minimumSize,maximumSize和paintComponent方法(它们扩展了JComponent).在此输入图像描述

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

GPComponent gp = new GPComponent(n, k);
GPinfinityComponent gpi = new GPinfinityComponent(n, k);

Box box = new Box(BoxLayout.Y_AXIS);

panel.add(Box.createVerticalGlue());
panel.add(gp);
panel.add(Box.createVerticalGlue());
JScrollPane thePane = new JScrollPane(gpi, JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    panel.add(thePane);

frame.pack();6
frame.add(panel, BorderLayout.CENTER); // just to be clear
frame.setVisible(true);
final int FRAME_WIDTH = 600;
final int FRAME_HEIGHT = 600;
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("GP("+n+", "+k+")");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

另外:两个组件的maximumSize = minimumSize = preferredSize对于圆形,尺寸为(350,350),另一个尺寸为(5000,150).

java layout swing jcomponent

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

将多个graphic2d组件绘制到JPanel中

我读过很多关于绘制 Graphics2D 组件和添加到 JPanel/JFrame 的教程,但我找不到如何简单地将多个这些组件添加到一个 JPanel 中。我下面的代码只添加了 1 个组件(行),我找不到为什么不能添加更多组件。

我究竟做错了什么?

在此输入图像描述

期望的行为:应该有 3 条红线。

我的整个代码:

package Examples;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example1 extends JFrame {

    private final JPanel panel;

    public Example1() {

        // jpanel with graphics
        panel = new JPanel();
        panel.setPreferredSize(new Dimension(200, 200));
        panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        panel.setBackground(Color.WHITE);
        add(panel);


        // adding lines to jpanel
        AddMyLine(); // 1st: this works well
        AddMyLine(); // 2nd: …
Run Code Online (Sandbox Code Playgroud)

java swing jcomponent graphics2d

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

Keymap, InputMap, ActionMap, KeyListener — 选择重载

我找不到关于所有这些之间关系的简明答案,以便我可以选择最佳实践并开始。JTextComponent已:

  • 旧的addKeyListener(..)。我们写一个KeyListener与被调用的方法keyPressed(..)keyTyped(..)等事件,我们可以查询:event.getKeyCode()

  • addKeymap(..)setKeymap(..)。A Keymaphas addActionForKeyStroke(..),它接受 a KeyStroke(我们可以通过调用KeyStroke的静态方法来指定字符或键码)和 an Action,它是一个ActionListener带有花里胡哨的东西。

  • getInputMap(..)getActionMap(..)。AnInputMap将 a KeyStroke(如上)映射到 a String,并将ActionMap字符串映射到 an Action(如上)。Java 教程如何使用键绑定讨论了这一点。

这是实现相同功能的三种冗余方式。除了比较优势/劣势之外,这自然会引发一个问题,即这三种机制如何共存?哪些优先于其他?

java swing jcomponent keylistener key-bindings

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