Tag: swing

Java GUI中的旋转方形面板

我想知道是否有可能实现一个方形但旋转90度的GUI面板(可能是JPanel)。 显然,将会有一个包含这个面板的顶层容器,而主面板在视觉上就是这个旋转的正方形面板。 更具体地说,我将一个面板(称为'A')分成4个相等的方形子面板,并用JLabels填充这些子面板,为此我想使用GridLayout。 最后,我会旋转'A'90度,以给我想要的。 从我读其他类似的问题,似乎你不能旋转JPanel本身,但你可以旋转其中包含的内容。 这适用于我的情况吗? 希望有人能指出。 谢谢。

java在DocumentListener中更改文档

我使用DocumentListener来处理JTextPane文档中的任何更改。 而用户键入我想要删除JTextPane的内容,并插入一个自定义文本。 在DocumentListener不能更改DocumentListener ,而是在这里说的是一个解决scheme: 在TextArea,Java中使用Document Listener时发生java.lang.IllegalStateException ,但是我不明白,至less我不知道该怎么做在我的情况呢?

来自文件path的Java JTree目录结构

我一直试图让我的头在这附近,所以也许你们中的一些人可以帮助我。 我有一个完整path的文件列表(这些只是文件在另一台机器上的string),例如: C:\a\b\c\file1.txt C:\a\b\c\file2.txt C:\a\d\file3.txt C:\e\file4.txt 我想创build一个Jtree来显示这样的目录结构: C: a b c file1.txt file2.txt d file3.tct e file4.txt 我一直在拆分string,所以我最终得到一个数组列表: "C:","a","b","c","file1.txt" "C:","a","b","c","file2.txt" "C:","a","d","file3.txt" "C:","e","file4.txt" 现在我想一次添加一个索引,但是如果这个值已经存在,那么跳到下一个索引。 即它将添加第一个数组,然后在第二个数组上它将在树的第0层上已经存在一个“C:”,因此移动到树的第1级和数组的索引1。 我有的问题是,我不知道如何以这种方式浏览树。 任何build议和或其他实现?

java / swing中closures窗口的正确动作是什么?

我只是在我的CustomUIPanel类中写了这个testing代码: 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); } }); } 它工作正常,如果CustomUIPanel.main()是程序的入口点,但它让我想知道:如果另一个类调用CustomUIPanel.main()testing? 然后我对System.exit(0)调用是不正确的。 如果没有顶层窗口,是否有办法告诉Swing事件派发线程自动退出? 如果没有,如果closures所有顶层窗口时程序退出的目标是JDialog / JFrame在closures时执行什么操作是正确的?

在标签中填充Unicode字符

如何在Swing中“填充”标签中的Unicode字符? 我试图为最近编程的国际象棋程序制作一个用户界面(用上面看到的象棋棋子)。 在这里我使用Unicode字符来表示我的棋子( \u2654到\u265F )。 问题如下: 当我将我的棋子JLabel的背景设置为白色时,整个标签都被填充了(在我的情况下,它是一个50 * 50px的白色正方形,正方形)。 这导致我的作品看起来像瓷砖而不是他们的照片。 当我把标签设置为不透明的时候,我只是得到我的棋子的cookies版本,而不是其内部填充的一个。 例如 有没有办法只填写字符? 如果没有,我想我会做一个精灵表,但我喜欢这个,因为我可以使用棋子的toString()方法的标签。 码 import java.awt.*; import javax.swing.*; import java.util.Random; class ChessBoard { static Font font = new Font("Sans-Serif", Font.PLAIN, 50); static Random rnd = new Random(); public static void addUnicodeCharToContainer( String s, Container c, boolean randomColor) { JLabel l = new JLabel(s); l.setFont(font); […]

在paintbrushtypes的GUI中,paintComponent()与paint()和JPanel vs Canvas

我从中得到了一些有趣的想法和批评, 这篇文章和这篇文章(见最后一篇关于GUI代码的文章)。 尽pipe如此,我仍然对一些事情感到困惑。 主要是显示用户引入graphics的最便宜方式是什么? 更具体地说,我通过在MouseDragged()方法中使用paintComponent(getGraphics())方法(相应的AuxClass2和AuxClass1 )将该类的一个对象与JPanel类中的paintComponent(getGraphics()) MouseDragged()方法一起使用。 显然,使用getGraphics()和paintComponent()而不是repaint()是不好的想法,我怀疑与内存使用有关。 每次用户拖动鼠标时也调用AuxClass2也是一个坏主意。 JPanel vs Canvas(比如swing vs awt)也有点混乱。 什么是什么时候用? 我一直在试图find解决方法,但没有find一个,特别是对于getGraphics()方法:如何将graphics添加到面板?

Java – 如何拖放JPanel及其组件

我有一个关于拖放的问题:我可以放置标签,文本或图标。 但是我想拖放一个JPanel及其所有组件(Label,Textbox,..等)。 我该怎么做?

“比较方法违反了它的一般合约!” – TimSort和GridLayout

我做了一个调色板,里面有一个jPanel和一个JLabel数组。 起初它工作得很好,但是后来我把一些其他jLabel从JPanel中join了一些事件。 现在我不断收到这个错误: Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:747) at java.util.TimSort.mergeAt(TimSort.java:483) at java.util.TimSort.mergeCollapse(TimSort.java:410) at java.util.TimSort.sort(TimSort.java:214) at java.util.TimSort.sort(TimSort.java:173) at java.util.Arrays.sort(Arrays.java:659) at java.util.Collections.sort(Collections.java:217) at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:136) at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:110) at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:435) at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166) at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:515) at java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:169) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:380) at java.awt.Component.dispatchEventImpl(Component.java:4731) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) at java.awt.EventQueue.access$200(EventQueue.java:103) at […]

重新绘制与不同的梯度的swingbutton

如何在点击时使用不同的渐变重新绘制JButton。 我已经重写了paintComponent(Graphics)方法来执行初始绘制。 Onclick我想重画它,但我不希望用户在actionperformed事件中做这个,因为我想这是一个独立的组件。 任何想法如何实现。 谢谢

JPanel的位置和大小根据屏幕大小而变化

该程序的大小根据屏幕分辨率或计算机的大小运行。 当我在一台具有特定尺寸显示器的电脑上运行它时,它会相应地改变。 我的问题是JPanel的位置和大小,或者框架内的任何对象,以改变屏幕大小。 因此,无论何时我将在任何尺寸不同的显示器上展示我的程序,组件仍然按照我最初的devise进行组织和布局。 但是在这里我用一个名为displayMenu的JPanel来testing它。 其中它显示了一个绿色的面板。 package saves.project; import com.sun.awt.AWTUtilities; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.BorderFactory; import javax.imageio.ImageIO; public class Homepage extends JFrame{ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Border grayline = BorderFactory.createLineBorder(Color.GRAY);; int width = screenSize.width, height = screenSize.height; public Homepage() throws IOException{ super("Homepage"); displayMenu(); displayBackground(); } public static BufferedImage […]