- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的表单上有一些复选框,我希望它们通过单线连接。有一些简单的方法可以做到这一点吗?由于我使用的是 WindowBuilder,并且对象可以随着表单大小的变化而移动,因此我不能只在屏幕上放置图形。
具体来说,我有 4 个复选框,以菱形图案代表棒球场上的底座。我希望连接它们的基本路径是直线。
最佳答案
所以,基本概念是:
这表明 JCheckBox
需要包含在同一组件/容器中,这只会使其更易于使用。
从那里,您将重写组件的 paintComponent
方法,计算源和目标组件/复选框的中心位置,并在之间画一条线
例如...
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.Rectangle;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JCheckBox[] checkBoxes;
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = gbc.BOTH;
gbc.weightx = 1;
gbc.weighty = 1;
checkBoxes = new JCheckBox[4];
for (int index = 0; index < 4; index++) {
checkBoxes[index] = new JCheckBox();
checkBoxes[index].setOpaque(false);
checkBoxes[index].setHorizontalAlignment(JCheckBox.CENTER);
}
// Base
gbc.gridx = 1;
gbc.gridy = 2;
add(checkBoxes[0], gbc);
// First
gbc.gridx = 2;
gbc.gridy = 1;
add(checkBoxes[1], gbc);
// Second
gbc.gridx = 1;
gbc.gridy = 0;
add(checkBoxes[2], gbc);
// Third
gbc.gridx = 0;
gbc.gridy = 1;
add(checkBoxes[3], gbc);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
protected Point center(Rectangle bounds) {
Point point = new Point();
point.x = bounds.x + (bounds.width / 2);
point.y = bounds.y + (bounds.height / 2);
return point;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
Point from = center(checkBoxes[0].getBounds());
for (int index = 1; index < checkBoxes.length; index++) {
Rectangle bounds = checkBoxes[index].getBounds();
Point to = center(bounds);
g2d.drawLine(from.x, from.y, to.x, to.y);
from = to;
}
Point to = center(checkBoxes[0].getBounds());
g2d.drawLine(from.x, from.y, to.x, to.y);
g2d.dispose();
}
}
}
警告:由于 Swing 中绘制的工作方式,当子组件更新/重新绘制时,父组件可能不会收到通知/绘制。因此,您对任何子组件所做的任何更改(可能会影响线条的位置)也需要强制父组件重新绘制
不,您不能通过 Window Builder 来完成此操作,您必须亲自动手才能使其正常工作
关于java - 在 Java Eclipse WindowBuilder 中的 2 个 JCheckBox 对象之间画一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038560/
我刚刚拿到了 JDK 和 Eclipse 经典版,我正在尝试找出用于安装的那个。 eclipse.org 提供的发行版和集成版有什么区别:http://www.eclipse.org/windowbu
是否可以在 WindowBuilder 中创建多行标签? 以下方法失败: 1) JLabel 带有 \n -s 2) 带文本的 JLabel,包装为 和maximuSize设置 3) JTextPan
我正在使用 Google 的 WindowBuilder 在 Eclipse 中为桌面 Java/SWT 应用程序创建 UI。我使用的是 Mac OS X。 我有这个简单的类(为了清楚起见,删除了导入
我正在尝试制作自己的 Java 组件,以便与 eclipse 中的 windowBuilder 一起使用。创建组件是比较容易的部分。问题是让 Eclipse 在创建组件时绘制该组件。我尝试过使用 SW
所以我有这个带有 WindowBuilder 的 Java 项目(带有 JInternalFrames 的 JDesktopPane),现在我要翻译整个程序。每次从 JDesktopPane 菜单打开
我最近开始使用 WindowBuilder for Java 进行编程,但遇到了一个我似乎无法解决的非常烦人的问题。 问题是调试(System.out.println(answer);在第 133 行
我正在使用 windowbuilder 为 Windows 制作一个带有 GUI 的 java 程序。我设置了组件的大小,使其与 3200x1800 的屏幕分辨率匹配。 构建程序后,我在屏幕分辨率为
我正在尝试制作一个全屏应用程序。我想知道如何使我在 JFrame 上添加的组件在每种分辨率下都占据屏幕的一部分。 设计选项卡模式: 当我在全屏上运行时,我得到这个: 如何让下面的界面调整为全屏? 最佳
我正在使用 WindowBuilder (Eclipse Juno 4.2) 为我的项目创建 GUI。在那个 GUI 中我需要使用日期选择器。我在网上搜索了一些日期选择器并找到了一些可以工作的库,但由
我正在 eclipse 的 windowbuilder 上工作一个项目。我的框架是全屏的,所以它不适合 WB 的设计页面。 JScrollPanes 也会出现同样的问题,在 Windowbuilder
我正在尝试使用 WindowsBuilder Pro 来开发 Swing UI。我正在使用 MiGLayout Manager。在设计 View 中开发时,当我创建一个新项目(JLabel、JText
WindowBuilder for Swing 将复选框创建为局部变量,将文本框创建为成员数据。这种不一致让我很烦恼。由于无论如何它们都会链接到顶层 JFrame 中,因此只要 JFrame 具有对它
目前我正在使用一个带有在 WindowBuilder 中设计的窗体的应用程序。该表单包含一个我想在 Clojure/seesaw 中使用的按钮。所以我的问题是:如何在 Clojure 中使用 Java
我有一个简单的 Eclipse Java 项目,它仅包含一个用 Eclipse 的 Window Builder 生成的类(Swing 类)。编码是在我的笔记本上完成的,并保存在云端,因此我可以从家里
我最近在 Eclipse 4.3 (Kepler) 上安装了 windowBuilder 工具。当我尝试在布局设计器上进行一些工作时,我的调色板窗口上不会出现任何组件。只有一些组件,如“布局 ->布局
我在 WindowBuilder for Eclipse 中创建了一个 Java 应用程序。我构建了一个菜单,并在其中一个菜单项上添加了 mouseclicked 事件。 JMenuItem mite
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在设计一个大表单,其中 Eclipse WindowBuilder plugin 。该类扩展了 JPanel 并使用 GridBagLayout 作为其 LayoutManager。 现在我的面板
我正在使用 windowbuilder 为我的应用程序构建 GUI。我已经为我的 GUI 创建了一个基于 SWT 的 shell 布局。我在 GUI 中有一个文本框。当用作 GUI 时,我想从文本框中
我正在尝试使用 3 行 3 列的 formlayout。中间的盒子设置为固定的宽度和固定的高度,其他盒子会增长。我认为这将使我的图像保持在中心,并且不会随着用户扩展框架而增长。 这是我正在做的事情,但
我是一名优秀的程序员,十分优秀!