Tag: swing

使用JPanel绘制直线并获得点坐标

我现在完全失去了。 我在使用Java构建GUI方面没有太多工作,我一直在阅读关于swing和JPanel的所有内容,我认为我想做的事情是可能的,我只是没有弄清楚如何 。 我正在尝试构建一个GUI,您可以在某个绘图区域内绘制直线,我希望能够获得起点/终点坐标,以便使用这些点进行一些数学运算。 任何帮助将不胜感激!

GridLayout上的动画精灵

我有点卡住了。 我正在创建一个Java内存游戏,它包含一个6×6网格的动画精灵(我教授的要求)。 在我的试用版中,我只能显示一个具有精灵动画的组件。 我的另一个尝试是改变p1 [i] = new Ash(),它能够将所有精灵绘制到网格中的所有组件但没有动画。 我想问一些关于如何处理这个问题的想法,其中网格中的所有组件都有一个ANIMATED精灵。 我的主要课程: public class Main extends Component{ public static void main(String[] args) { Ash ash = new Ash(); JFrame f = new JFrame(“Game sample”); JPanel panel1 = new JPanel(new GridLayout(6,6,6,6)); JPanel[] p1 = new JPanel[36]; for(int i = 0;i trigger) { trigger = start + delay; ash.repaint(); […]

Java Swing JScrollPane行号故障

我在JScrollPane中有一个简单的JEditorPane,它在左侧显示行号。 除非您将窗口移出屏幕并再次将其拉回,否则它会很有效,当您停止拖动时它会看起来像这样: 有任何想法吗? 我是否需要监听移动/拖动事件并在某处调用重绘/重新validation? 认为它可能是显而易见的,但这里有一些代码。 我正在使用JSyntaxPane。 public EditorPanel() { this.setLayout(new BorderLayout()); PythonSyntaxKit.initKit(); codeEditor = new JEditorPane(); JScrollPane scrPane = new JScrollPane(codeEditor); Dimension d = new Dimension(710,702); codeEditor.setPreferredSize(d); codeEditor.setContentType(“text/python”); codeEditor.setText(“Welcome to PhysUtil!”); this.add(scrPane, BorderLayout.CENTER); toolbar = new PhysUtilToolbar(); this.add(toolbar, BorderLayout.PAGE_START); this.repaint(); } //from MainFrame Class… public EditorPanel mainEditor; public MainFrame() { //Someone can figure out how […]

调整JPanel的大小以准备打印而不将其从原始位置移除

在我的程序中,我经常需要打印各种JComponents(通常是JPanels),我喜欢它们是整页的。 我现在的方式是使用以下代码: g2d.scale(pf.getImageableWidth()/componentToPrint.getWidth(), pf.getImageableHeight()/componentToPrint.getHeight()); 但这通常会拉伸或以其他方式改变我想要打印的东西,我更喜欢做一些智能重新resize的东西,也许是一个function版本: componentToPrint.setSize(pf.ImageableWidth(), pf.ImageableHeight); 或者说将组件添加到新的JFrame然后设置帧大小(问题是组件不能同时存在于两个地方)。 我不在乎resize是否会使GUI的其余部分看起来很糟糕,只要它是可以轻松重置的东西。 有没有办法做到这一点?

如何将图像放在特定的JPanel中?

我最近正在尝试棋盘游戏,现在我正在制作Checkers棋盘游戏。 但是,我可以弄清楚如何在GridLayout的单元格中显示芯片。 每个单元都有自己的JPanel ,我通过FOR循环在2D数组中分配。 我需要在特定的JPanel中显示图像p1Chip ,它只是一个.png ,让我们说它的变量名称是board[2][3] ,而不会搞乱GridLayout 。 关于如何做到这一点的示例代码将是很好的,因为它将帮助我更好地理解。 我在互联网上搜索过但我找不到我需要的东西,或者至少找不到解释如何做的东西。 这是到目前为止的代码: package checkers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.Image; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import […]

如何将JTable列设置为String并排序为Double?

我还是Java的新手,对JTable(更具体地说是JXTable)有问题,并按列类对混合数据类型进行排序……让我详细说明…… 我有一个JXTable,用于保存产品列表的数据。 这个表有一个价格列,我只设置为String.class,这样我就可以显示前缀为’$’的价格。 我遇到的问题是当行按价格排序时,它们不是按双打排序,而是按字符串排序,所以这些值: 89.85,179.70,299.40,478.80 分类为: 179.70,299.40,47.80,89.85(升序)和89.85,47.80,299.40,179.70(降序) 我想要做的是在排序时删除’$’并将列排序为双打。 我怎么做到这一点? 编辑: 非常感谢Jiri Patera的回复。 帮助我理解tablecellrenderer负责在这些类型的情况下操纵值,这是一个很大的帮助。 以下是最终完成我想要的摘录。 public Component getTableCellRendererComponent(JTable pTable, Object pValue, boolean pIsSelected, boolean pHasFocus, int pRow, int pColumn) { // Use the wrapped renderer Component renderedComponent = mWrappedRenderer.getTableCellRendererComponent(pTable, pValue, pIsSelected, pHasFocus, pRow, pColumn); Component renderedComponentHeader = pTable.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(pTable, pValue, pIsSelected, pHasFocus, pRow, pColumn); if (pColumn == […]

如何将JScrollPane Layout设置为与JTable相同?

Tabel1.setModel(new DefaultTableModel(x,y)); JScrollPane pane = new JScrollPane(Tabel1); 当我运行程序时,滚动窗格看起来比表格大。 如何使滚动窗格布局与表格相同?

JFrame中的JGraph

我想绘制一些图形,包括我的应用程序中的顶点和边。 我发现JGraph是一个用于绘制图形的好库。 我浏览了一些有关它的在线资料,但找不到任何有关如何在Swing应用程序中嵌入JGraph的相关文章。 (在JFrame显示JGraph等)。 任何人都可以帮助我吗?

GridBagLayout重量对齐

我是动态生成需要使用相对大小的布局,我发现不使用外部Java布局库的唯一方法是GridBagLayout的weightx和weighty。 在这一点上,它完全按照我的需要工作,只有一个小例外。 当我有一个包含两个JPanels的列,其空间分布分别为66.6%和33.3%,然后另一个列有3个JPanels,每个空间使用33.3%的空间,第一列的33.3%与第一列的33.3%不同占第二位的33.3%。 我需要它们完全一致。 不幸的是,这是我的第一篇文章,我无法发布任何图片,我希望我不会因为以下情况而遇到麻烦: 我想我知道问题是什么,在每个JPanel里面我有一个JLabel,因为weightx和weighty的定义是“Weights用于确定如何在列之间分配空间(weightx)和行之间(weighty) ”我想差异两个33.3%s之间的事实是第二列包含一个额外的JLabel。 在这个post中, StanislavL说“容器要求孩子们选择他们喜欢的大小”,所以,我想知道解决方案是否要覆盖JLabel的getPreferredSize方法。 我不确定这样做会有多“脏”,我非常感谢您解决这个问题的建议。 提前致谢! 迭戈

打印页眉和页脚的颜色?

我正在尝试在打印JTable时创建彩色页眉和页脚。 具体来说,我在javax.swing.JTable中查看getPrintable(),但是MessageFormat没有给我指定页眉或页脚颜色的选项。 我该怎么做? 澄清我有兴趣在打印时设置页眉/页脚。 例如,记事本会将文件名作为标题添加到您打印的内容中。 更新似乎没有标准的方法,有人可以给我一些解决方法吗? 到目前为止发布的唯一答案与打印(如发送到打印机,不显示到屏幕)页眉/页脚无关。 复制自我的评论:我对打印页眉/页脚感兴趣。 例如,当您从记事本打印文档时,它会将文件名附加为标题(或者可能是页脚,我不记得确切)