小编mKo*_*bel的帖子

如何从Java中的JFrame中删除所有组件?

我正在编写一个程序,我有一个JFrame,我想从中删除所有组件,然后只添加一个组件并重新绘制框架.到目前为止我所拥有的是类似下面的代码(在实现JFrame的对象中调用,其中StartPanel实现JPanel):

removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码时,它显示一个空窗口(不是startPanel),当我最小化/调整窗口大小时,窗口变黑.如果我遗漏了removeAll()JFrame上已有的元素,那么它就会显示startPanel.关于如何实际删除所有内容,然后让新面板仍然出现的任何想法?

java swing jframe repaint removeall

27
推荐指数
3
解决办法
6万
查看次数

如何限制JSpinner

此应用程序的有效范围是0到9,但似乎没有NetBeans 7.0.1 JSpinner最小值或最大值设置.还有另一种方法可以将此JSpinner的范围限制为0..9吗?

java swing jspinner netbeans-7

25
推荐指数
3
解决办法
5万
查看次数

Java:将滚动添加到文本区域

如何将滚动条添加到文本区域.我试过这个代码,但它没有用.

            middlePanel=new JPanel();
        middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));

        // create the middle panel components

        display = new JTextArea(16, 58);
        display.setEditable(false); // set textArea non-editable
        scroll = new JScrollPane(display);
        scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        //Add Textarea in to middle panel
        middlePanel.add(scroll);
        middlePanel.add(display);
Run Code Online (Sandbox Code Playgroud)

谢谢

java swing jpanel jscrollpane jtextarea

24
推荐指数
3
解决办法
14万
查看次数

听众的哪一个适合可见性的JPanel被改变了

是否有一些规则,或好/坏经验AncestorListener,ComponentListenerHierarchyListener听取变化的可见性JPanelJComponents

其中一个比其他人更好还是更安全?我特别想知道何时以及如何JPanel/ JComponent隐藏.

请注意以下代码包含不正确的Swing规则,例如Thread.sleep(int)在这种情况下使用,允许我Listeners在Swing GUI中打印出正确的顺序

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;

public class CardlayoutTest extends JFrame {

    private static final long serialVersionUID = 1L;
    public CardLayout card = new CardLayout();

    public CardlayoutTest() {
        JPanel pnlA = new JPanel(new BorderLayout());
        pnlA.add(new JButton("A"), BorderLayout.CENTER);
        JPanel pnlB = new JPanel(new …
Run Code Online (Sandbox Code Playgroud)

java swing jcomponent listener jpanel

23
推荐指数
1
解决办法
2万
查看次数

如何将Icon设置为JFrame

我试过这种方式,但它没有改变?

ImageIcon icon = new ImageIcon("C:\\Documents and Settings\\Desktop\\favicon(1).ico");
frame.setIconImage(icon.getImage());
Run Code Online (Sandbox Code Playgroud)

java icons swing jframe

23
推荐指数
2
解决办法
7万
查看次数

获得JToggleButton的状态

说我有一个

JToggleButton but = new JToggleButton("OK") ;
Run Code Online (Sandbox Code Playgroud)

现在我需要but点击它的状态.我的意思是我需要知道它是否被点击了.

java swing listeners jtogglebutton

22
推荐指数
2
解决办法
5万
查看次数

为什么在main方法中使用SwingUtilities.invokeLater?

经过多年的Java编程,我总是习惯于创建main()这样的方法:

public static void main(String[] args) 
{
    runProgram();
}
Run Code Online (Sandbox Code Playgroud)

但是最近我从Web上学习了一些代码并且有时看到这个代码而不是main()上面的常规用法:

public static void main(String[] args) 
{
    SwingUtilities.invokeLater(new Runnable() 
    {
        public void run() 
        {
            runProgram();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道:

  • 为什么要使用这个而不是通常的main()方式?当我试一试时,我看不出有任何区别.
  • 这两种方式有什么区别?

感谢您阅读我和您的答案.

java swing program-entry-point invokelater swingutilities

22
推荐指数
2
解决办法
8978
查看次数

如何绘制一个给定X和Y坐标作为圆的中间点的圆?

我开发了一种用于定位塔架信号强度的电信应用.我使用了java swing,当我在移动信号发射塔位置的给定点周围绘制圆圈时遇到问题.我已经计算了X,Y坐标和半径值.

请找到我用来绘制圆圈的下面的代码,它有问题.

JPanel panelBgImg = new JPanel() {
    public void paintComponent(Graphics g) {
        g.drawOval(X, Y, r, r);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,它创建了圆圈,但没有将X和Y坐标作为中心点.将X和Y坐标作为圆的左上角.

任何人都可以通过将给定的X和Y坐标作为圆的中心点来帮助我绘制圆.

java swing java-2d jpanel paintcomponent

22
推荐指数
3
解决办法
17万
查看次数

AWT窗口关闭监听器/事件

我很抱歉,如果这是一个的n00b问题,但我已经花太长,这一次我创建的窗口侦听器,窗口事件,以及其他一切,我怎么指定调用什么方法?这是我的代码:

private static void mw() {
    Frame frm = new Frame("Hello Java");
    WindowEvent we = new WindowEvent(frm, WindowEvent.WINDOW_CLOSED);
    WindowListener wl = null;
    wl.windowClosed(we);
    frm.addWindowListener(wl);
    TextField tf = new TextField(80);
    frm.add(tf);
    frm.pack();
    frm.setVisible(true);

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取一个URL,并下载它,我已经完成了其他所有工作,我只是想让窗口关闭.

java events swing awt windowlistener

21
推荐指数
2
解决办法
4万
查看次数

ListSelectionListener被调用两次

class MyListListener implements ListSelectionListener {

      public void valueChanged (ListSelectionEvent e) {
           JList source = (JList) e.getSource();
           // do something
      }
}

JList myList = new JList (myModel);  
myList.addListSelectionListener (new MyListListener());
Run Code Online (Sandbox Code Playgroud)

我做的很简单.我有一个JList.如果选择了列表中的项,则调用该处理程序.问题是当我从一个项目转到另一个项目时,处理程序被调用两次.如果第一个触发器传递原始选定项目,我可以看到使用,第二个触发器传递新项目.但是两次都传递了相同的新项目.那是什么意思?有没有办法阻止处理程序被调用两次?

java swing jlist listselectionlistener

21
推荐指数
2
解决办法
1万
查看次数