相关疑难解决方法(0)

在Java中使用按钮单击在JPanel中绘制一条线

我想在JPanel中画一条线.这是我的GUI,我希望JPanel中的一行是白色的.

在此输入图像描述

我找到很多例子,但问题是如何使用它.

在许多例子中,他们总是画一个从JPanel扩展的JFrame.

我想将面板添加到框架中并添加一些按钮以在多个方向上绘制线条,并使用中心的X按钮来清洁JPanel.

这是界面的代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


public class circuit extends JFrame {

 private JPanel contentPane;

 /**
  * Launch the application.
  */
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     circuit frame = new circuit();
     frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 /**
  * Create the frame.
  */
 public …
Run Code Online (Sandbox Code Playgroud)

java graphics swing line jpanel

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

在java/swing中关闭窗口时采取的正确行动是什么?

我刚在CustomUIPanel类中编写了这个测试代码:

public static void main(String[] args) {
    final JDialog dialog = CustomUIPanel.createDialog(null, 
       CustomUIPanel.selectFile());
    dialog.addWindowListener(new WindowAdapter() {
        @Override public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

它是正确的,如果CustomUIPanel.main()是程序的入口点,但它让我想知道:如果另一个类要求CustomUIPanel.main()测试怎么办?然后我的电话System.exit(0)是不正确的.

如果没有顶级窗口,有没有办法告诉Swing事件调度线程自动退出?

如果不是,如果目标是让所有顶级窗口关闭时程序退出,那么JDialog/JFrame在关闭时做什么是正确的?

java swing dialog

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

在jsplitpane中的jscrollpane中调整canvas的问题

我正在使用NetBeans GUI编辑器创建一个应用程序,我希望在其中有一个JSplitPane,其顶部组件将Canvas在a中JScrollPane,而底部组件将是a JTextArea或类似的东西.

当我向下拉分隔器,从而增加顶部组件的大小时,一切似乎都调整得很好.

当我试图向上推动分频器时出现问题:分频器似乎在Canvas(也可能在它下面JScrollPane)下方.

我试图首选/最小/最大的尺寸的各种组合JScrollPaneCanvas,但似乎没有任何工作.

这是Netbeans生成的代码的一部分,可能与手头的问题有关:

jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
canvas1 = new java.awt.Canvas();
jTextField1 = new javax.swing.JTextField();

jSplitPane1.setDividerLocation(300);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

jScrollPane1.setViewportView(canvas1);

jSplitPane1.setTopComponent(jScrollPane1);

jTextField1.setText("jTextField1");
jSplitPane1.setRightComponent(jTextField1);
Run Code Online (Sandbox Code Playgroud)

由于这是我的第一个问题,我不允许在问题中嵌入图像,因此我将发布链接:

红色箭头表示分隔线的位置.

在此先感谢您的时间.

java swing jscrollpane jsplitpane

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

Java Swing中的MouseMotionListener,将其与组件内部的组件一起使用

我正在使用Swing中的Touch User界面.虽然我知道这不是最佳的,但我的截止日期很短,没有时间触摸屏特定的GUI包(如果有的话).

我希望我的用户能够在屏幕上"滑动"他们的手指,并且我制作的特殊JScrollPane的视图随之移动.代码很简单 -

    public class PanScrollPane extends JScrollPane implements MouseMotionListener{  
public PanScrollPane() {
    super();        
    this.addMouseMotionListener(this);      
}
@Override
public void mouseDragged(MouseEvent arg0) {
    System.out.println("Mouse Dragged!");       
}
@Override
public void mouseMoved(MouseEvent arg0) {
    System.out.println("Mouse Moved!");     
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是JScrollPane是各种JComponents的容器.当我第一次开始研究这个时,我发现MouseMovedEvent和MouseDraggedEvent会向上传播'GUI树',直到他们遇到一个带有专门针对该事件的侦听器的Component.现在看来,我添加到panScrollPane的任何组件都会阻止任何这些MouseMotion事件,让我无法平移.

    panScrollPane.add(new JButton("This thing blocks any mouse motion events"));
Run Code Online (Sandbox Code Playgroud)

我想用手传播MouseEvent(将侦听器添加到每个组件然后让它们将事件发送给它们的父组件)都可以.然而,这是一个非常耗时的事业,我宁愿把时间花在其他东西的工作,我想知道如果任何人都知道任何变通针对此问题.

感谢您的阅读,并希望感谢您的回答!:)

编辑:让我的意图更清晰.我只希望panPanel捕获mousemotion事件,任何其他事件(如MouseClick,MouseRelease)应该正常处理

java swing

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

标签 统计

java ×4

swing ×4

dialog ×1

graphics ×1

jpanel ×1

jscrollpane ×1

jsplitpane ×1

line ×1