- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Grid mze 不更新?这些按钮应该编辑行和列,然后将更新 Grid mze 的单元格,但事实并非如此。如果我点击与 H 对齐的 + 按钮,mze 应该更新为 26x25 网格,但什么也没有发生,只有 Columns + 1 出现在控制台上。
import javax.swing.*;
import java.awt.*;
import javax.swing.GroupLayout.*;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;
import javax.swing.border.MatteBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class csc extends JFrame{
public csc(String s){
super(s);
setSize(800,600);
//code generated from eclipse
JPanel panel = new JPanel();
panel.setBackground(SystemColor.control);
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(panel, GroupLayout.DEFAULT_SIZE, 774, Short.MAX_VALUE)
.addContainerGap())
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(panel, GroupLayout.DEFAULT_SIZE, 550, Short.MAX_VALUE)
.addContainerGap())
);
JPanel scCont = new JPanel();
scCont.setBorder(new MatteBorder(0, 0, 1, 1, (Color) new Color(0, 0, 0)));
JPanel cplCont = new JPanel();
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(27)
.addComponent(scCont, GroupLayout.PREFERRED_SIZE, 475, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(cplCont, GroupLayout.PREFERRED_SIZE, 235, GroupLayout.PREFERRED_SIZE)
.addContainerGap(19, Short.MAX_VALUE))
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(131)
.addComponent(cplCont, GroupLayout.PREFERRED_SIZE, 249, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_panel.createSequentialGroup()
.addGap(35)
.addComponent(scCont, GroupLayout.PREFERRED_SIZE, 480, GroupLayout.PREFERRED_SIZE)))
.addContainerGap(35, Short.MAX_VALUE))
);
Grid mze = new Grid(4,4,400,400);
cscPanel cpl = new cscPanel(this,mze);
scCont.setLayout(new BorderLayout(0, 0));
mze = new Grid(cpl.rows,cpl.cols,400,400);
mze.setForeground(SystemColor.desktop);
scCont.add(mze);
GroupLayout gl_cplCont = new GroupLayout(cplCont);
gl_cplCont.setHorizontalGroup(
gl_cplCont.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cplCont.createSequentialGroup()
.addContainerGap()
.addComponent(cpl, GroupLayout.DEFAULT_SIZE, 215, Short.MAX_VALUE)
.addContainerGap())
);
gl_cplCont.setVerticalGroup(
gl_cplCont.createParallelGroup(Alignment.LEADING)
.addGroup(gl_cplCont.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cpl, GroupLayout.PREFERRED_SIZE, 419, GroupLayout.PREFERRED_SIZE))
);
cplCont.setLayout(gl_cplCont);
panel.setLayout(gl_panel);
getContentPane().setLayout(groupLayout);
//end of eclipse generated code
pack();
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args){
csc MakeMaze = new csc("Catch Torchic!");
MakeMaze.setVisible(true);
}
}
class cscPanel extends JPanel{
static final int MIN_CELLS = 3;
static final int MAX_W_CELLS = 50;
static final int MAX_H_CELLS = 50;
static final int MAX_DELAY = 500;
static final int MIN_DELAY = 5;
int rows = 25; int cols = 25; private int genDelay = 50; private int solveDelay = 50;
JButton bGen;
JButton bmm;
JButton bSolve;
JButton bLoad;
JButton bRowsPlus;
JButton bRowsMinus;
JButton bColsPlus;
JButton bColsMinus;
private TextField tfRows;
private TextField tfCols;
private JPanel rowsPanel;
private JPanel colsPanel;
private JPanel rowsBtnPanel;
private JPanel colsBtnPanel;
private Grid mze;
private csc Fr;
private JPanel p = new JPanel();
private cscButtonHandler handler;
cscPanel(csc Fr, Grid mze) {
this.Fr = Fr;
this.mze = mze;
setLayout(new GridLayout(11, 1, 0, 3));
this.rowsBtnPanel = new JPanel();
this.colsBtnPanel = new JPanel();
this.rowsBtnPanel.setLayout(new GridLayout(1, 2));
this.colsBtnPanel.setLayout(new GridLayout(1, 2));
this.rowsBtnPanel.add(this.bRowsMinus = new JButton("-"));
this.rowsBtnPanel.add(this.bRowsPlus = new JButton("+"));
this.colsBtnPanel.add(this.bColsMinus = new JButton("-"));
this.colsBtnPanel.add(this.bColsPlus = new JButton("+"));
this.rowsPanel = new JPanel();
this.rowsPanel.setLayout(new BorderLayout(2, 0));
this.rowsPanel.add("West", new Label("W"));
this.rowsPanel.add("Center", this.tfRows = new TextField(3));
this.rowsPanel.add("East", this.rowsBtnPanel);
this.colsPanel = new JPanel();
this.colsPanel.setLayout(new BorderLayout(2, 0));
this.colsPanel.add("West", new Label("H"));
this.colsPanel.add("Center", this.tfCols = new TextField(3));
this.colsPanel.add("East", this.colsBtnPanel);
this.tfRows.setEditable(false);
this.tfCols.setEditable(false);
add(this.bLoad = new JButton("LOAD"));
add(this.rowsPanel);
add(this.colsPanel);
add(this.bGen = new JButton("RANDOM"));
add(this.bSolve = new JButton("SOLVE"));
add(this.bmm = new JButton("MAIN MENU"));
this.tfRows.setText(Integer.toString(this.rows));
this.tfCols.setText(Integer.toString(this.cols));
this.bSolve.setEnabled(false);
handler = new cscButtonHandler(Fr,this,mze);
bGen.addActionListener(handler);
bmm.addActionListener(handler);
bSolve.addActionListener(handler);
bLoad.addActionListener(handler);
bRowsPlus.addActionListener(handler);
bRowsMinus.addActionListener(handler);
bColsPlus.addActionListener(handler);
bColsMinus.addActionListener(handler);
}
void setPlusMinusEnable() {
this.bRowsPlus.setEnabled(this.rows < 50);
this.bRowsMinus.setEnabled(this.rows > 3);
this.bColsPlus.setEnabled(this.cols < 50);
this.bColsMinus.setEnabled(this.cols > 3);
}
void setGenEnable(boolean paramBoolean){
this.bGen.setEnabled(paramBoolean); }
void setSolveEnable(boolean paramBoolean) { this.bSolve.setEnabled(paramBoolean); }
}
class cscButtonHandler implements ActionListener{
csc a;
cscPanel b;
Grid c;
public cscButtonHandler(csc a,cscPanel b, Grid c){
this.a = a;
this.b = b;
this.c = c;
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == b.bmm)
{System.out.println("Back to MainMenu");}
else if(e.getSource() == b.bSolve)
{System.out.println("Solve Maze");}
else if(e.getSource() == b.bLoad)
{System.out.println("Open Load Dialog");}
else if(e.getSource() == b.bRowsPlus)
{System.out.println("Rows + 1");
b.rows++;
c.repaint(b.rows,b.cols,400,400);}
else if(e.getSource() == b.bRowsMinus)
{System.out.println("Rows - 1");
b.rows--;
c.repaint(b.rows,b.cols,400,400);}
else if(e.getSource() == b.bColsPlus)
{System.out.println("Columns + 1");
b.cols++;
c.repaint(b.rows,b.cols,400,400);}
else if(e.getSource() == b.bColsMinus)
{System.out.println("Columns - 1");
b.cols--;
c.repaint(b.rows,b.cols,400,400);}
else if(e.getSource() == b.bGen)
{System.out.println("Generating Randomly");}
}
}
class Grid extends Canvas{
Cell[][] maze;
int rows;
int cols;
public Grid(int rows, int cols, int h, int w) {
this.rows = rows;
this.cols = cols;
maze = new Cell[rows][cols];
setPreferredSize(new Dimension(h,w));
}
public void paint(Graphics g) {
int k;
double width = getSize().width;
double height = getSize().height;
double htOfRow = height / (rows);
for (k = 0; k < rows; k++)
g.drawLine(0, (int) (k * htOfRow) , (int) width, (int) (k * htOfRow) );
double wdOfRow = width / (cols);
for (k = 0; k < cols; k++)
g.drawLine((int) (k*wdOfRow) , 0,(int) (k*wdOfRow) , (int) height);
}
}
class Cell {}
最佳答案
这段代码有一些问题,但至少我可以看到重绘的一个问题是对 repaint
的调用正在传递看起来像网格单元格坐标的东西,而实际上 repaint
接受像素坐标。
关于java - 单击告诉它重新绘制的按钮后 Canvas 不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061393/
我可以使用两种方法添加一个 child ,一种是 Canvas.AddVisualChild(Visual); Canvas.AddLogicalChild(Visual); 我在视觉对象的 Draw
在过去的几周里,我一直在尝试各种方法,试图找到将 BDD 用于依赖于 HTML5 Canvas 元素以及用户与之交互的 Web 应用程序的最佳方法。 我一直在使用 Jasmine 和 Cucumber
我正在尝试完成撤消/重做。我正在使用loadFromJSON(...)从我存储在数组中的 Canvas 状态重新构建 Canvas 。基本上,我的想法是破坏现有的 Canvas 并重新构建 Canva
我正在尝试在 Canvas 上设置简单的放大/缩小功能。我正在使用 KineticJS 处理触摸事件并在 Canvas 中绘图,但无法实现缩放。 KinteicJS 有一个类似的例子,但它们总是在中心
我正在使用 processing.js 在 javascript 中开发一个画笔应用程序 它正在使用 Canvas 对象。我想在 Canvas 的背景中保留一个图像。在前景中画一些东西。在保存时,我只
您好,我想为 discord.js Bot 安装 Canvas 。 当我尝试使用以下命令安装 Canvas 时npm install canvas我收到以下错误: pi@server:~/Bots/D
我正在尝试使用 Canvas 和动力学的组合来构建填充图案,但在尝试获得连续线时遇到了问题。 此 jsfiddle显示了到目前为止我所拥有的,但是因为我的重复模式是正方形,角会影响线条,我尝试使用 l
我正在开发一个 webassembly 程序。 我可以使用 emscripten_set_canvas_size 设置 Canvas 大小(我一直读到我需要切换到新的 API,因为这个 API 会贬值
您好,我已经为第一个 Canvas 中的第一个图像创建了一个圆形表单,但我没有成功使用第一个 Canvas 的 dataURL 并将其添加到第二个 Canvas 中。 这是我的 fiddle :htt
问题在于不同浏览器之间的不一致。 使用Dart Chrome,JS Chrome,JS Opera运行 双击可以进入和退出全屏 m_oCanvas.width =(window.screen.widt
我正在使用Flutter框架和Dart开发图像编辑器,因此无法将矩阵滤镜应用于 Canvas 。 我正在尝试使用“Paint”类和“canvas.drawPaint(paint)”函数将矩阵过滤器应用
如果在已经具有非整数比例因子的 Canvas 上绘制图像,我会遇到 Canvas 上下文drawImage()方法的问题。似乎这样的图像以一种奇怪的方式被剪切(有时图像的最右边的部分被剪切,有时是最底
Canvas 的“宽度”属性值有限制吗? 在下面的示例中,我在 ScrolledWindow 中创建一个 Canvas。 # Packages package require BWidget # Ma
我正在尝试制作类似于 this article 底部的效果的文本效果 我建议的方法是: 制作两个 Canvas ,一个是可见的,另一个是不可见的我用它作为缓冲区。 在缓冲区 Canvas 上绘制一些文
例如var new = canvas.toDataURL("image/png"); 我希望这个新变量中存在的 base64 显示到存在的第二个 Canvas 元素中。但是它不使用 drawimage
有人有使用这两个 Node.js 库中的一个或两个的经验吗?很想知道每个人的成功或困难。 最佳答案 LearnBoost是社区中最多产的 Node 模块开发人员之一,因此我选择使用 node-canv
如何知道 Canvas 运行的是“WebGL”还是普通 Canvas ? 通过检查源代码,我发现这两种情况都是 Canvas 。 最佳答案 这真的取决于你想如何去发现。 例如你可以这样调用 `getC
在 Canvas 上绘图非常好。甚至橡皮擦也能正常工作。问题是,当 Canvas 保存为图像时,它绘制的是黑线而不是橡皮擦。 为了更好地理解,我添加了屏幕截图和代码。 1。在删除绘图时 - 一个。源代
我正在尝试为 Canvas 附加鼠标悬停和鼠标移出事件: 默认 Canvas 是函数drawcircle的 Canvas 。 如果用户越过 Canvas ,应将其更改为drawEllipse的 Can
我正在使用 Three.js 构建一个简单的 2D 游戏。我只使用世界的 X 和 Y 位置来移动对象,将它们的 z 位置保留为零。我使用禁用旋转的 TrackballControls,以允许使用右键单
我是一名优秀的程序员,十分优秀!