我正在编写一个程序,我有一个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.关于如何实际删除所有内容,然后让新面板仍然出现的任何想法?
此应用程序的有效范围是0到9,但似乎没有NetBeans 7.0.1 JSpinner最小值或最大值设置.还有另一种方法可以将此JSpinner的范围限制为0..9吗?
如何将滚动条添加到文本区域.我试过这个代码,但它没有用.
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)
谢谢
是否有一些规则,或好/坏经验AncestorListener,ComponentListener或HierarchyListener听取变化的可见性JPanel和JComponents?
其中一个比其他人更好还是更安全?我特别想知道何时以及如何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) 我试过这种方式,但它没有改变?
ImageIcon icon = new ImageIcon("C:\\Documents and Settings\\Desktop\\favicon(1).ico");
frame.setIconImage(icon.getImage());
Run Code Online (Sandbox Code Playgroud) 说我有一个
JToggleButton but = new JToggleButton("OK") ;
Run Code Online (Sandbox Code Playgroud)
现在我需要but点击它的状态.我的意思是我需要知道它是否被点击了.
经过多年的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,当我在移动信号发射塔位置的给定点周围绘制圆圈时遇到问题.我已经计算了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坐标作为圆的中心点来帮助我绘制圆.
我很抱歉,如果这是一个的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,并下载它,我已经完成了其他所有工作,我只是想让窗口关闭.
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 ×10
swing ×10
jpanel ×3
jframe ×2
awt ×1
events ×1
icons ×1
invokelater ×1
java-2d ×1
jcomponent ×1
jlist ×1
jscrollpane ×1
jspinner ×1
jtextarea ×1
listener ×1
listeners ×1
netbeans-7 ×1
removeall ×1
repaint ×1