Tag: swing

将组件放在Glass Pane上

我有一个JLabel的子类,它构成了我GUI的一个组件。 我已经实现了将组件从一个容器拖放到另一个容器的能力,但没有任何视觉效果。 我想让这个JLabel在项目从一个容器拖动到另一个容器时跟随光标。 我想我可以创建一个玻璃窗格并在那里绘制它。 但是,即使我将组件添加到玻璃窗格,将组件设置为可见,并将玻璃窗格设置为可见,并将玻璃窗格设置为不透明,我仍然看不到该组件。 我知道该组件有效,因为我可以将其添加到内容窗格并显示它。 如何将组件添加到玻璃窗格? 最后想出了如何让简单的例子工作。 谢谢,@ kff。 我能够使这个解决方案适应我原来的问题,允许我删除约60行Java2D代码,这些代码手动呈现JLabel的表示。 package test; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class MainFrame extends JFrame { /** * @param args */ public static void main(String[] args) { MainFrame mf = new MainFrame(); mf.setSize(400, 400); mf.setLocationRelativeTo(null); mf.setDefaultCloseOperation(DISPOSE_ON_CLOSE); mf.setGlassPane(new JPanel()); JLabel l = new […]

Java Animate JLabel

所以我创建了一个基本的应用程序,我希望在屏幕底部有一个JLabel,从左下角开始,动画样式,在设定的时间内移动到右下角,在中心移动静态图像。 为此,我使用BorderLayout创建了一个带JPanel的JFrame。 有一个JLabel,其中ImageIcon添加到BorderLayout.CENTER,而一个JPanel添加到BorderLayout.SOUTH。 我的代码虽然草率而且非常漂亮,但是: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.BorderFactory; public class GameWindow extends JPanel{ private static JLabel mainWindow, arrowLabel, arrowBox; protected static JFrame frame; protected static JPanel arrows; public static int x = 600; public GameWindow(){ mainWindow = new JLabel(“Center”); […]

制作一个强大的,可resize的Swing Chess GUI

我如何制作这款可resize的Chess GUI? 我们公司的任务是制作国际象棋游戏。 它需要在Windows,OS X和Linux / Unix机器上运行,我们选择Java来实现这一点,同时保持一个通用的代码库(便于维护和降低成本)。 我的任务是创建GUI。 用户设计团队已经清除了以下规范。 与客户。 国际象棋比赛(国际象棋冠军)将有力量resize和直接,它包括: 顶部的工具栏,带有UI组件: 新按钮 保存按钮 恢复按钮 辞职按钮 用于向玩家提供消息的标签。 在游戏的左侧,我们需要一个可供将来使用的区域,它可能包括以下内容: 捕获的碎片列表 促销棋子时选择棋子的选择器 游戏统计 提示等 客户和逻辑团队仍在解决这方面的细节。 那么暂时,只需用包含?的标签来标记它? 作为文字。 GUI的其余部分将由棋盘本身组成。 它将有: 国际象棋棋盘的主要区域。 如果用户指向棋子,它应该显示带边框的焦点。 它也应该是键盘可访问的。 客户将提供多个棋子(各种尺寸,样式和颜色)的精灵表,以允许用户改变游戏的外观。 棋盘将有标签指示列(从左到右:A,B,C,D,E,F,G和H)和行(从上到下:8,7,6,5,4,3,2) &1)。 国际象棋棋盘和列/行标签将以1px黑色边框为边界,周围有8px填充。 随着玩家增加游戏的大小,棋盘应该保持正方形,否则填充可用空间。 国际象棋棋盘背后的背景色应该是赭色,但在下面的模型中,我们将棋盘背后的区域设为绿色,以突出resize的行为。 在游戏开始之前,最小尺寸的国际象棋冠军 激活新游戏按钮后,最小尺寸的国际象棋冠军 国际象棋冠军比最小尺寸更宽 国际象棋冠军比最小尺寸更高

用Java绘制线条

我怎么画这样的java图? 这是我的代码,必须至少绘制这个数字的一​​半 import java.awt.Color; import java.awt.Graphics; import javax.swing.JComponent; import javax.swing.JFrame; public class Main { public static void main(String[] a) { JFrame window = new JFrame(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setBounds(30, 30, 300, 300); window.getContentPane().add(new MyCanvas()); window.setVisible(true); } } class MyCanvas extends JComponent { private static final long serialVersionUID = 1L; public void paint(Graphics g) { int i =0; […]

更改Swing JTable单元格颜色

我正在尝试使用JTables,TableModels,JTableHeaders,渲染器等。我正在尝试制作一个简单的虚拟表(用于练习目的),如下所示: – 1 2 3 A A1 A2 A3 B B1 B2 B3 C C1 C2 C3 我还希望B2单元格 – 只有那个单元格 – 具有蓝色(Color.BLUE)背景 – 所有其他单元格都可以具有自动分配的Swing默认颜色。 我的代码如下,基于我在本网站和互联网上发现的无数例子。 但我没有得到我想要的结果。 相反,我得到一个看起来像这样的表: A A1 A2 A3 B B1 B2 B3 C C1 C2 C3 请注意,第一行(标题)根本不存在。 此外,使用下面列出的代码,这将执行并设置所有颜色的单元格的颜色,而不仅仅是我想要的B2单元格。 代码 : public class MyTable { public static void main(String[] args) { String[][] data […]

JTable设计与后端数据结构同步

我有一个使用表模型从数据结构加载的JTable。数据结构的格式为NavigableMap<Float,NavigableMap> 。示例数据为: Table Format: Range f1,v1 f2,v2 f3,v3 f4,v4 12.1-30.2 30,true 32,false 45,true 50,false 30.2-45.6 30,true 32.4,true 45,true 50.1,true 以上数据格式在DS中表示为 DS Format: Key Value 12.1 <,,,> 30.2 <,,,> 45.6 null 我已经设法使用table-model在Jtable中表示上面给出的数据。一旦数据从DS加载到表我必须允许用户编辑。现在我有问题。我怀疑是否应该保留数据结构与表中的更改同步,或者我应该在用户完成编辑后从表中重新创建DS,然后将其替换为旧的DS。 更多我需要validation数据(例如从上面 – 假设用户想要编辑值30.1。他应该只允许输入12.1和45.6之间的值。因为数据表是字符串的(一旦加载)我是计划使用正则表达式和键监听器,并使用所有用户键按下与正则表达式不匹配的值和不在范围内的值。我不确定这是一个好主意还是含义。我会想得到一些建议。

如何将输出流设置为TextArea

我正在尝试为程序创建GUI面板,我想要通常打印到我的命令提示符的所有内容,以打印到TextArea对象。 我的GUI面板大部分都是格式化的,我无法将文本打印到TextArea,这里是我的文件: package guipanel; import javax.swing.*; import java.awt.*; import java.io.*; /** * * @author Dan */ public class GUIPanel extends JFrame { public GUIPanel() { initComponents(); } private void setOutputStream(boolean catchErrors) { System.setOut(aPrintStream); setVisible(true); requestFocus(); if (catchErrors) { System.setErr(aPrintStream); } } private void addTabs(JTabbedPane jTabbedPane1) { JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new […]

将jRadioButton添加到jTable中

我想将jRadioButton添加到jTable 。 我用了给定的代码 private class CustomCellRenderer extends DefaultTableCellRenderer { /* (non-Javadoc) * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ @Override public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) { return new javax.swing.JRadioButton(); } } 但是当我运行这个时,我得到了不同颜色的jTable列,当我点击单选按钮时没有任何反应。 我正在使用netbeans。 如果我尝试自定义jTable那么jTable不会出现任何jTable 。 给我一个适当的指导。

绘制JSlider的滑块图标

想要重新绘制JSlider的标记或拇指而不是标准灰色。 我怎样才能做到这一点?

Java Swing:如何动态更改GUI

我需要动态添加组件。 而且,我需要动态地改变布局。