我使用JFrame创建并显示一个窗口,并将其设置为非常基本的属性.
public FrameVertices( String sTitle, Graph mMap, int iMul ) {
super( sTitle );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize ( 300, 300 );
setLocation ( 600, 300 );
setVisible ( true);
this.iMul = iMul;
this.gGraph = mMap;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用paint()方法在窗口内绘制一些东西.
问题是,当其他一些窗户覆盖我JFrame然后揭开它时,它的内容JFrame不会被重新绘制 - 除非我调整大小或最小/最大JFrame.
我错过了什么吗?
我有一个简单的Swing GUI.(而且不仅如此,我编写的所有swing GUI).当它运行时,除了空白屏幕之外它不会显示任何内容,直到我调整主框架的大小,所以每个组件都再次绘制,我可以显示它们.
这是我的简单代码:
public static void main(String[] args) {
JFrame frame = new JFrame("JScroll Pane Test");
frame.setVisible(true);
frame.setSize(new Dimension(800, 600));
JTextArea txtNotes = new JTextArea();
txtNotes.setText("Hello World");
JScrollPane scrollPane = new JScrollPane(txtNotes);
frame.add(scrollPane);
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:当我开始这个课时,框架会出现我添加的所有组件,直到我调整框架大小.
谢谢 :)
我在java中的netbeans 7.2中创建了一个gui应用程序.我在JFrame那里创造了一个.在自动生成的代码中设置为nimbus外观.但我的框架看起来不像雨云.
所以我调试代码,发现nimbus在返回的数组中不可用getInstalledLookAndFeels().
那么我该怎么做才能安装灵气的外观和感觉呢?JDK 1.6用于编译代码.
我使用SimpleDataFormat多年了.我从来没有得到这个Exception
程序在下面,我从互联网上得到了一个例子的代码:
public static void main(String[] args) {
// Make a new Date object. It will be initialized to the
// current time.
Date now = new Date();
// Print the result of toString()
String dateString = now.toString();
System.out.println(" 1. " + dateString);
// Make a SimpleDateFormat for toString()'s output. This
// has short (text) date, a space, short (text) month, a space,
// 2-digit date, a space, hour (0-23), minute, second, a space,
// short timezone, …Run Code Online (Sandbox Code Playgroud) 如何使用一个滚动JScrollPane来移动另一个或多个滚动JScrollPane?
例如:
我有三个JTable独立的JScrollPanes.我想将滚动窗格绑定到彼此.
如果我将使用一个 - 另一个将以相同的方式滚动.
某种Listener我无法找到的?
任何sugestions?
最好的祝福.
我在尝试使用JLayeredPane.
我走了这么远:

(希望你能看到方块G6在标签上有一个绿色边框,显示哪个方块被选中)
但是当我将我的 2 SidePanels添加到我的ChessBoard面板,然后在顶部有另一层标签应该完全覆盖每个板块但它没有:

如您所见,围绕块的绿色边框G2已关闭。
当我将SidePanels添加到sChessBoard并将其添加到底层并将其大小设置为 600x600时,我已将其缩小到明显的范围,然后添加顶层,它是将完全适合块的标签ChessBoard,以及绿色边框围绕选定的JLabel(以及下方的ChessBoard方块 [黑色或白色])绘制,由于SidePanels 减少了棋盘的实际大小为 600x600,因此它偏离中心绘制,现在它将是600-sp1.getWidth()x 600-sp2.getHeight()。我尝试设置顶层的边界和首选大小来补偿它,但似乎没有用。任何帮助表示赞赏谢谢:
ChessBoardTest.java:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashMap;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class ChessBoardTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Dimension boardSize = new Dimension(600, 600);
JFrame frame = new …Run Code Online (Sandbox Code Playgroud) 当我运行我的代码,我希望看到一个JPanel在我JFrame,但没有显示出来.我在框架中有一个按钮,它出现了.但是JPanel没有出现,我甚至用红色着色.这是我的代码JPanel:
import java.awt.*;
import javax.swing.JPanel;
public class graphic extends JPanel {
private static final long serialVersionUID = -3458717449092499931L;
public Game game;
public graphic(Game game){
this.game = game;
this.setPreferredSize(new Dimension(400,400));
this.setBackground(Color.RED);
}
public void paintComponent(Graphics g){
for (Line l:game.mirrors){
g.setColor(Color.BLACK);
g.drawLine(l.start.x, l.start.y, l.end.x, l.end.y);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的JFrame代码:
import java.awt.Container;
import java.awt.event.*;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;
public class Viewer implements ActionListener {
public JFrame frame;
public JButton drawShoot;
public boolean draw; …Run Code Online (Sandbox Code Playgroud) 我是Java新手.我只是想加载图像作为背景JFrame.我想要做的是从C驱动器(这不是我的工作区)获取图像所以我做了什么Board.java:
ImageIcon i = new ImageIcon("C:/image.png");
img =i.getImage();
Run Code Online (Sandbox Code Playgroud)
并尝试绘制这样的东西:
public void paint(Graphics g )
{
super.paint(g);
Graphics2D g2d= (Graphics2D) g;
g2d.drawImage(img, 0, 100, null);
}
Run Code Online (Sandbox Code Playgroud)
然后我就像这样在我的主要课堂上打电话
public static void main(String[] args)
{
JFrame frame= new JFrame(" Game") ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1200, 365);
frame.setVisible(true);
frame.add(new Board());
}
Run Code Online (Sandbox Code Playgroud)
但我没有显示任何图像,这是合法的添加方式Image吗?
我创建了一个接收Action的JButton类,JButton类包括击键和鼠标监听器,因此我可以根据需要在多个帧中使用相同的类.
我的问题是:按下键时JButton没有得到焦点,但是它正在执行操作.我需要创建一个新的背景或告诉用户按钮执行操作的东西.
有任何想法吗??
这是我的代码:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import swtdesigner.SwingResourceManager;
public class IButtonSave extends JButton{
private static final long serialVersionUID = 1L;
private Action action = null;
public IButtonSave() {
super();
setFocusPainted(true);
setFocusable(true);
try {
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
setMargin(new Insets(0, 0, 0, 0));
setBorder(new LineBorder(Color.black, 1, true));
setIconTextGap(0); …Run Code Online (Sandbox Code Playgroud) 我对java很新,并开始使用不同的线程来使用wait()或sleep()在我的代码的一部分上运行其他代码.
对于这个项目,我使用JFrame与javax.swing.*和java.awt.*进口.我想要做的是让其中一个线程(在我的代码中它是主要的,起始线程)允许玩家在tic tac toe board上选择一个空间,当他们点击它时,它将改变图标,并且然后AI将等待1秒钟,然后从我创建的第二个线程回放.
不幸的是,每当我调用ait.sleep(1000)(ait是我的线程名称)时,两个线程都会在完成执行之前等待1秒.谁能告诉我为什么睡一个线程会阻止我的整个执行?
java swing multithreading event-dispatch-thread thread-sleep
java ×10
swing ×9
jframe ×4
jscrollpane ×2
focus ×1
image ×1
java-7 ×1
jbutton ×1
jlayer ×1
jlayeredpane ×1
jpanel ×1
jtable ×1
key-bindings ×1
layout ×1
nimbus ×1
thread-sleep ×1