我需要显示所有居住在"彼得斯"或"乌鸦"大道的客户的姓名,地址和DOB.
这很好,我这样做:
SELECT Customers.FirstName, Customers.Surname,
Customers.CustomerAddress, Customers.DOB
FROM Customers
WHERE
( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
Run Code Online (Sandbox Code Playgroud)
但后来我读得更难了,它说:
使用UNION查询生成结果.
所以我在UNIONs 上读了一下,但大多数情况下我看到两个SELECT查询的返回值必须是相同的长度,并且通常示例使用2个不同的表?
所以我需要UNION在同一张桌子上执行一个表示所有在其地址中带有Peters和Crows字样的客户.我试过了:
SELECT Customers.CustomerAddress
FROM Customers
WHERE
( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
UNION
SELECT Customers.FirstName, Customers.Surname,
Customers.CustomerAddress, Customers.DOB
FROM Customers
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式.
这是可以理解的,因为我的第一个SELECT只返回3个结果(即我正在寻找的结果),而另一个返回所有被寻址的(包括我需要的).
所以我的确切问题是,如何UNION在同一张桌子上执行a (客户共10条记录),以便显示所有在其地址中包含Peters和Crows字样的客户?(其中3个记录与其他7个记录不匹配)
我有JPanel一个JFrame.我在上面加了一张图片,JPanel但它只显示了图片的一部分:这是代码的一部分,我做了它:
JPanel panelImg = new JPanel()
{
public void paintComponent(Graphics g)
{
Image img = new ImageIcon("Welcome.png").getImage();
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
g.drawImage(img, 0, 0, null);
}
};
mainFrame.add(panelImg);
Run Code Online (Sandbox Code Playgroud)
所以这就是它的样子:

完整的图片如下所示:

有没有办法将图片缩放到JFrames尺寸?提前致谢
JOptionPane除非满足用户输入字段的条件,否则有人可以告诉我是否有一种方便的方法可以防止在单击"确定"时关闭?
或者我别无选择只能使用JFrame?
到目前为止我的验证逻辑.似乎不起作用,因为按钮是由于某种原因一次性可点击...
final JDialog dialog3 = new JDialog(OmniGUI.getFrame(), "Create new Node - id:" + newNodeID);
dialog3.setContentPane(theOPane);
dialog3.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
theOPane.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent e) {
if(e.getSource() == theOPane){
String val = (String) ((JOptionPane) e.getSource()).getValue();
if(val=="Create"){
System.out.println("Checking content");
if(!valid){
System.out.println("closing the window");
dialog3.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog3.removeAll();
dialog3.dispatchEvent(new WindowEvent(dialog3, WindowEvent.WINDOW_CLOSING));
}
}
}
}
});
dialog3.setLocation(p);
dialog3.pack();
dialog3.setVisible(true);
Run Code Online (Sandbox Code Playgroud) 
我想做一个看起来像上面的gui.现在我有一个面板,它将保存名称标签,名称文本字段,brith日期标签和生日文本字段.我的问题是什么是最好的布局管理器在面板上使用,以便"名称组件"行(标签+文本字段)和"出生日期组件"行(标签+文本字段),将垂直均匀地分布在小组.
我想过使用流布局,但这会导致两行组件之间没有间隙.我想过使用网格布局,但我不知道两行组件之间的间隙大小.
一个更复杂的方法......我考虑将名称标签和文本字段放在一个面板中,并将出生日期标签和文本字段放在另一个面板中,然后使基本面板边框布局和设置名称为北,生日日期为南. ..但是我仍然需要确保名称组件在名称面板中垂直居中,而birthdate组件在出生日期面板中垂直居中.
任何帮助表示赞赏.目标是确保名称组件行和出生日期组件行垂直展开,名称组件垂直居中于上半部分,出生日期组件垂直居中于下半部分.如果有什么问题让人感到困惑,请告诉我我会尝试改写以便更好地理解.
我正在使用严格的Java swing与eclipse,没有GUI构建器或类似的东西.
在学习了dispose()应该在使用后调用Graphics/ Graphics2Dobject之后,我开始改变我的游戏以包含它.
当我添加g2d.dispose()了被覆盖paintComponent(Graphics g)的JPanel,我添加的组件(JLabel类的扩展)未呈现的时候我仍然可以点击它们等但它们不会被绘制.
我测试了正常JLabel和JButton相同的效果(虽然JButton鼠标在它上面时渲染).
所以我的问题是为什么会发生这种情况?
这是一个SSCCE来证明:

在取消呼叫后dispose()在paintComponent的MainMenuPanel类:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用标题,导航栏(导航栏右侧)和页脚创建标准网站布局.
到目前为止我已经完成了这个:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
.header {
float: top;
width: 100%;
height: 75px;
}
.navbar {
float: left;
width: 20%;
height: 100%;
height: 100%;
min-height:100%;
overflow: scroll;
}
.body {
float: right;
width: 80%;
height: 100%;
min-height:100%;
overflow: scroll;
}
.footer {
float: bottom;
width: 100%;
}
</style>
</head>
<body>
<div class="header"> Header </div>
<div …Run Code Online (Sandbox Code Playgroud) 我在使用KeyBoardFocusManger全屏工作时遇到了问题Window.无论如何,它都不会得到键盘输入.我使用a System.exit(0)和a println()来查找对keypressed/release/typed方法的任何调用,但不会抛出任何错误.我试过了KeyListeners; 但我看了以后这个,我改变了一个KeyboardFocusManager,同样的事情仍然发生.我真的很绝望; 从我可以判断,Window是不是得到了键盘的焦点?
这是我的主要内容:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// Determine if full-screen mode is supported directly
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
if (gs.isFullScreenSupported()) {
Frame frame = new Frame(gs.getDefaultConfiguration());
SpaceInvaderUI spaceInvaderUI = new SpaceInvaderUI(frame);
// Enter full-screen mode
gs.setFullScreenWindow(spaceInvaderUI);
} else {
JOptionPane.showMessageDialog(null, "Does not support full screen!", "Error 0x01", JOptionPane.ERROR_MESSAGE); …Run Code Online (Sandbox Code Playgroud) 我想让扫描仪在循环中接收输入.一旦用户想要完成,他就可以退出这个循环.我尝试了很多不同的方法,但总有一些问题.这是代码:
private void inputEntries() {
Scanner sc = new Scanner(System.in);
System.out.println("Continue?[Y/N]");
while (sc.hasNext() && (sc.nextLine().equalsIgnoreCase("y"))) {//change here
System.out.println("Enter first name");
String name = sc.nextLine();
System.out.println("Enter surname");
String surname = sc.nextLine();
System.out.println("Enter number");
int number = sc.nextInt();
Student student = new Student(name, surname, number);
students.add(student);
try {
addToFile(student);
} catch (Exception ex) {
Logger.getLogger(TextReader.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Continue?[Y/N]");
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码的问题,也发生在我尝试的不同方法上,当用户输入Y时,Scanner将跳过第一个名字输入,并跳转到姓氏.如果用户键入N,则循环正确停止.有人可以解释这种情况发生的原因,以及如何克服使用Scanner类?
ps:执行类似的操作while(sc.nextLine().equals("Y"))会导致循环在首次运行循环后从用户输入之前终止.
当它被点击JLabel,我想明白了,如果点击的是"Icon part",和" Text part"的JLabel,所以不同的可以采取行动.有一个聪明的办法做到这一点?或者只是我必须与坐标相对解决问题图标和文字?
我想将JPanel转换为图像.我使用以下方法:
public BufferedImage createImage(){
int w = getWidth();
int h = getHeight();
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
paint(g);
return bi;
}
Run Code Online (Sandbox Code Playgroud)
但问题是JPanel包含在JScrollPane中.因此,当我将jpanel转换为图像时,图像仅包含jpanel中可见的部分,并且隐藏在滚动窗格内部的部分不包含在图像中.
是否有任何解决方案可以将JPanel的全部内容转换为图像?
java ×8
swing ×7
jpanel ×3
image ×2
css ×1
fullscreen ×1
graphics ×1
html ×1
imageicon ×1
jframe ×1
jlabel ×1
joptionpane ×1
jscrollpane ×1
key-bindings ×1
keylistener ×1
sql ×1
union ×1