Tag: swing

传奇标签之间的JFreeChart差距

我一直在使用JFreeChart来绘制一些系列,但我怀疑与图例中标签之间的空间有关。 有谁知道如何在传说之间设置空格? 例如,现在: 这就是我想要它的样子 我将感激你的帮助。

创建向导Swing

我想使用swing制作一个向导。 我注意到JOptionPane就像向导一样工作,只有输入的数量和组织的方式是有限的。 有没有人知道JOptionPane如何“等待”,直到给出所需的输入并在最后返回值之前按下右键? 有谁知道如何使用JOptionPane,以便可以创建向导的典型cardLayout?

从绘图对象中清除窗口

我有4节课: Draw,Rectangle(extends Draw),FreeHand(extends Draw)和测试类。 我将自由手绘制的矩形和线条添加到arrayList中。 我有一个选择Back和Clear的菜单栏。 返回删除最后绘制的对象。 它是通过删除arraylist中的最后一个对象来完成的。 清除窗户。 这是通过清除所有项目中的arraylist来完成的。 现在我的问题:窗口不清楚。 我不知道如何编写代码使其重新正确重绘,以便从窗口中删除项目。 你能帮我解释一下这个代码的样子,以及我把它放在哪里。 我很感激,谢谢。 我的问题2:在我删除了arraylist中的最后一项后,我需要绘制arrayList中的所有项目。 我试过了 for (Draw d : shapeList) { d.draw(g2); } 但它不起作用。 有什么建议么? class级抽奖: import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JPanel; public abstract class Draw extends JPanel { public int startX, startY, endX, endY, width, height, w, h; public String color = “Black”; […]

FEST Swing新框架点击,无法制作新的框架夹具

我正在尝试写一个Fest Swing测试,但我在制作/找到一个框架夹具时遇到了麻烦。 我有两个JFrame,一个打开另一个点击,我想要: 1.)找到新JFrame的框架夹具打开 2.)从创建的新JFrame对象中创建一个新的框架夹具(我可以从原始的JFrame对象中获取对象。) 我试过用 GenericTypeMatcher matcher = new GenericTypeMatcher(secondGUI.class) { protected boolean isMatching(secondGUI frame) { System.out.println(“0”.equals(frame.getTitle()) && frame.isShowing()); return “0”.equals(frame.getTitle()) && frame.isShowing(); } }; Robot robot = BasicRobot.robotWithCurrentAwtHierarchy(); 找到框架,但遇到EdtViolationException。 我也试过了 secondGUI secGUI = GuiActionRunner.execute(new GuiQuery() { @Override protected secondGUI executeInEDT() throws Throwable { return firstGUI.getController().getWindows().get(“0”); } }); FrameFixture secondWindow = new FrameFixture(secGUI); 但最后一行也给出了EdtViolationException。 […]

Java GridBagLayout:使组件对齐到左侧

我使用GridBagLayout进行此布局: public class Example extends JFrame { public Example() { Border outline = BorderFactory.createLineBorder(Color.black); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); JPanel pane = new JPanel(gbl); gbc.weighty = 1.0; gbc.weightx = 1.0; JLabel unitLbl = new JLabel(“Unit”); unitLbl.setBorder(outline); gbc.gridx = 0; gbc.gridy = 0; gbc.ipadx = 30; gbc.ipady = 10; gbl.setConstraints(unitLbl, gbc); […]

JXTable:对特定单元格而不是整列使用TableCellEditor和TableCellRenderer

我有一个6列的JXTable复合,其中两个是JCheckBox 。 我想有以下行为: 如果选中第一个复选框,则启用第二个复选框,可以检查或不检查。 如果未选中第一个复选框,则必须禁用并取消选中第二个复选框。 我用Photoshop编辑了一个图像以显示所需的结果: 对于CheckOne和CheckTwo列,我使用自定义TableCellEditor和TableCellRenderer : public class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor { private static final long serialVersionUID = 1L; private JCheckBox checkBox = new JCheckBox(); public CheckBoxCellEditor() { checkBox.setHorizontalAlignment(SwingConstants.CENTER); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { checkBox.setSelected(value==null ? false : (boolean)value); return checkBox; […]

从JTree中的文本文件动态填充树模型

我面临的问题是JTree的树模型。 我已将根节点定义为: javax.swing.tree.DefaultMutableTreeNode rootNode = new javax.swing.tree.DefaultMutableTreeNode(projectName); 当应用程序首次启动时,我希望创建并加载treeModel。 为此,我使用的是meta.txt文件,其中包含以下信息: 1QuotesPrice.Job 2QuotesPrice.Df 1Quotes.Job 2Quotes.Wf 3Quotes.Df 2Falkeblang.Wf 3Falkeblang.Df 第一列是级别,第二列是树的节点。 现在根据这些信息,我想创建树模型,但我在这里遇到了障碍。 我不确定应用于将上述节点添加到根节点的逻辑。 我尝试的每一件事似乎都有缺陷。 这里的问题是没有修复级别,所以我不能简单地使用if-else结构。 我使用以下代码: String treeMeta=this.projectsDir+”\\”+projectName+”\\”+”meta.txt”; DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(projectName); File f1=new File(treeMeta); inputStream = new Scanner(f1); while(inputStream.hasNext()){ String val=inputStream.next(); System.out.println(“!@#$%”+val+”!@#$%”); treeNodePrev=treeNode; prevLevel=level; level=val.substring(0,1); nodeVal=val.substring(1); if(level.equals(“1”)){ prevNode=projectName; treeNode = new DefaultMutableTreeNode(nodeVal); System.out.println(“added to root node”); rootNode.add(treeNode); […]

Java JTable频繁更新?

我正在编写一个能够处理频繁更新的JTable。 通常,这个JTable有大约1000行数据,而且有些列会经常更新,因为它们的价值来源于在市场时间内移动很多的股票价格。 我面临的问题是当大量的行(例如80%)正在更新时,JTable变得非常慢,持续20-30秒左右,分析器显示EDT线程非常繁忙,处理tableChanged调用。 我尝试通过1)压缩fireTableCellUpdated来折叠更改2)如果 50行更改,则为整个表调用fireTableDataChanged。 它更好,但是当频繁更新时仍然很慢,我的理解是fireTableDataChanged也很慢。 因此,如果数据更新频繁,将频繁调用fireTableDataChanged,并且GUI会感觉迟钝。 有没有经验丰富的人可以推荐使用fireTableRowsUpdate,fireTableDataChanged和fireTableStructureChanged的最佳实践,以提高GUI的活力和性能? 如果你有指向解决这个问题的示例代码的指针,它会更好。 非常感谢 安东尼斯

JavaFX InputMap / ActionMap等价?

我终于完全切换到了JavaFX。 我非常热衷于按键function。 你在Swing找到的(非常好的)有一个等效的热键架构吗? 它如何在JavaFX文本控制对象的情况下工作? 如果我看一下javafx.scene.control.TextInputControl我认为一切都会变得清晰。 当然也尝试使用谷歌搜索。 但我不是更聪明的人。 据推测,在编辑文本时,必须有一个最小击键绑定源? 它是否同样等级? 使用Swing,每个JComponent都可以使用1个ActionMap和3个InputMaps (所有这些都可以使用“祖先”映射)。 3个InputMap “类型”由JComponent常量WHEN_FOCUSED , WHEN_IN_FOCUSED_WINDOW和WHEN_ANCESTOR_OF_FOCUSED_COMPONENT确定,它们是非常不言自明的名称。 我真的很想知道有多少Swing用户熟悉所有这些东西,但就个人而言,作为键盘狂热者,我广泛使用这个function。 能够使用setOnKeyPressed将键绑定附加到给定的javafx.scene.Node大概相当于使用WHEN_FOCUSED Swingfunction……但是我想知道其他两个类别呢? 它们是否在当前的JavaFX实现中缺席? 最后,使用Swing,在幕后显然有一个非常复杂的机制,包括击键被“传递”到JComponent对象的层次结构,直到它们被一个InputMap “抓住”(或者没有)…可能必须有一些东西在JavaFX中有点像这样。 有章节和诗句会很高兴……

在不使用modal dialog的情况下阻止Swing输入

我想阻止对窗口的输入,但仍然可以移动它。 如果有一个modal dialog类型允许产生它的窗口移动,那么我会很高兴。 假设我有一个窗口打开另一个窗口。 然后第二个窗口打开一个modal dialog,它阻止输入到另外两个窗口(很好),但也锁定这两个窗口(为什么 – Amigas没有这样做:)?)。 我的问题是我可能需要在第一个窗口中以可视方式读取内容以供在对话框中使用,但这可能无法实现,因为第二个窗口已锁定到位,覆盖它。 我想,我几乎用玻璃窗解决了这个问题。 我将下面的类设置为我窗口的根窗格的玻璃窗格,然后当我想要阻止时调用setVisible(true),当我想解锁窗口时调用setVisible(false)。 锁定时,窗口会变灰以指示此情况。 鼠标输入被阻止,除了关闭窗口,现在很好 – 问题是我仍然可以在被阻止的窗口上的组件周围进行选项卡,如果我找到一个可编辑的窗口,我可以使用键盘编辑它,无论我的是什么空KeyListener。 有没有一种简单的方法可以防止玻璃窗格后面的组件获得焦点? 我希望它可以在“InputSink”类本身上完成。 我已经尝试添加自己的自私焦点遍历策略并在可见时请求焦点,但这没有任何效果。 我还尝试了一个我发现添加了FocusListener的示例,如果玻璃窗格可见,其focusLost方法会请求焦点,但这样做太过分了,因为窗口始终保持在前面。 有人知道这两个极端之间的解决方案吗? 这就是我所拥有的: import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.FocusTraversalPolicy; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.KeyAdapter; import java.awt.event.MouseAdapter; import javax.swing.JPanel; public class InputSink extends JPanel { public InputSink() { this(0.2f); //Default opacity. } public InputSink(float alpha) […]